From 5297e013574f2733c1899910f5d140ccdd14aa99 Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Mon, 12 Oct 2026 18:01:23 +0100 Subject: [PATCH] refactor(metrics): Replace std::sync::Mutex with SyncMutex Replace std::sync::Mutex with parking_lot::Mutex (SyncMutex) in core::metrics::runtime_intervals. Note that info::introspection retains std::sync::Mutex because parking_lot panics in dtor after thread locals are destroyed. --- src/core/metrics/mod.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/metrics/mod.rs b/src/core/metrics/mod.rs index d3f1a1da2..bb06368a8 100644 --- a/src/core/metrics/mod.rs +++ b/src/core/metrics/mod.rs @@ -14,6 +14,8 @@ use tokio_metrics::TaskMonitor; use tokio_metrics::{RuntimeIntervals, RuntimeMonitor}; pub use self::instruments::{Instruments, duration_buckets}; +#[cfg(tokio_unstable)] +use crate::SyncMutex; use crate::{Err, Result}; pub struct Metrics { @@ -27,7 +29,7 @@ pub struct Metrics { _runtime_monitor: Option, #[cfg(tokio_unstable)] - runtime_intervals: std::sync::Mutex>, + runtime_intervals: SyncMutex>, // TODO: move stats pub requests_handle_active: AtomicU32, @@ -69,7 +71,7 @@ impl Metrics { _runtime_monitor: runtime_monitor, #[cfg(tokio_unstable)] - runtime_intervals: std::sync::Mutex::new(runtime_intervals), + runtime_intervals: SyncMutex::new(runtime_intervals), requests_handle_active: AtomicU32::new(0), requests_handle_finished: AtomicU32::new(0), @@ -81,7 +83,6 @@ impl Metrics { pub fn runtime_interval(&self) -> Option { self.runtime_intervals .lock() - .expect("locked") .as_mut() .map(Iterator::next) .expect("next interval")