Make tracing filter reload handles mutable

Makes the following diff nicer.
This commit is contained in:
Lambda 2025-02-14 23:59:41 +00:00
parent 4cc390345a
commit 5eab758bd2
3 changed files with 9 additions and 7 deletions

View file

@ -79,7 +79,8 @@ impl<L, S> ReloadHandle<L> for reload::Handle<L, S> {
}
/// A type-erased [reload handle][reload::Handle] for an [`EnvFilter`].
pub(crate) type FilterReloadHandle = Box<dyn ReloadHandle<EnvFilter> + Sync>;
pub(crate) type FilterReloadHandle =
Box<dyn ReloadHandle<EnvFilter> + Send + Sync>;
/// Collection of [`FilterReloadHandle`]s, allowing the filters for tracing
/// backends to be changed dynamically. Handles may be [`None`] if the backend

View file

@ -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",
));

View file

@ -66,7 +66,7 @@ pub(crate) mod marker {
pub(crate) struct Service {
pub(crate) db: &'static dyn Data,
pub(crate) reload_handles: Option<FilterReloadHandles>,
pub(crate) reload_handles: Option<Arc<RwLock<FilterReloadHandles>>>,
// actual_destination, host
pub(crate) actual_destination_cache: Arc<RwLock<WellKnownMap>>,
@ -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| {