From 5eab758bd29c5234faa0df69bbf0cff03eb91101 Mon Sep 17 00:00:00 2001 From: Lambda Date: Fri, 14 Feb 2025 23:59:41 +0000 Subject: [PATCH] Make tracing filter reload handles mutable Makes the following diff nicer. --- src/observability.rs | 3 ++- src/service/admin.rs | 9 +++++---- src/service/globals.rs | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/observability.rs b/src/observability.rs index f2503f61..0dfb3b55 100644 --- a/src/observability.rs +++ b/src/observability.rs @@ -79,7 +79,8 @@ impl ReloadHandle for reload::Handle { } /// A type-erased [reload handle][reload::Handle] for an [`EnvFilter`]. -pub(crate) type FilterReloadHandle = Box + Sync>; +pub(crate) type FilterReloadHandle = + Box + Send + Sync>; /// Collection of [`FilterReloadHandle`]s, allowing the filters for tracing /// backends to be changed dynamically. Handles may be [`None`] if the backend diff --git a/src/service/admin.rs b/src/service/admin.rs index 7fc67118..eb453239 100644 --- a/src/service/admin.rs +++ b/src/service/admin.rs @@ -1176,12 +1176,13 @@ impl Service { "Reloading filters is disabled", )); }; + let mut handles = handles.write().await; let handle = match backend { - TracingBackend::Log => &handles.log, - TracingBackend::Flame => &handles.flame, - TracingBackend::Traces => &handles.traces, + TracingBackend::Log => &mut handles.log, + TracingBackend::Flame => &mut handles.flame, + TracingBackend::Traces => &mut handles.traces, }; - let Some(handle) = handle else { + let Some(handle) = handle.as_mut() else { return Ok(RoomMessageEventContent::text_plain( "Backend is disabled", )); diff --git a/src/service/globals.rs b/src/service/globals.rs index 0881ce13..65d8b7bc 100644 --- a/src/service/globals.rs +++ b/src/service/globals.rs @@ -66,7 +66,7 @@ pub(crate) mod marker { pub(crate) struct Service { pub(crate) db: &'static dyn Data, - pub(crate) reload_handles: Option, + pub(crate) reload_handles: Option>>, // actual_destination, host pub(crate) actual_destination_cache: Arc>, @@ -252,7 +252,7 @@ impl Service { let mut s = Self { db, config, - reload_handles, + reload_handles: reload_handles.map(|h| Arc::new(RwLock::new(h))), keypair: Arc::new(keypair), dns_resolver: TokioAsyncResolver::tokio_from_system_conf() .map_err(|e| {