Open
Description
Bug Report
Version
├── tracing v0.1.29
│ ├── tracing-attributes v0.1.18 (proc-macro)
│ └── tracing-core v0.1.21
└── tracing-subscriber v0.2.25
├── tracing v0.1.29 (*)
├── tracing-core v0.1.21 (*)
├── tracing-log v0.1.2
│ └── tracing-core v0.1.21 (*)
└── tracing-serde v0.1.2
└── tracing-core v0.1.21 (*)
Platform
Linux pc 5.14.2-arch1-2 #1 SMP PREEMPT Thu, 09 Sep 2021 09:42:35 +0000 x86_64 GNU/Linux
Description
When layer, wrapped in reload::Layer
, have a filter, set with .with_filter
(my_layer.with_filter(my_filter)
), it will panic on next call to event!
(info!
in my case). But if layer built as my_filter.and_then(my_layer)
, everything works:
use tracing_subscriber::{filter::LevelFilter, fmt, layer::SubscriberExt, reload, Layer};
fn main() {
// This version works
// let reloadable_layer_fn = || LevelFilter::TRACE.and_then(fmt::Layer::new());
// This version doesn't work
let reloadable_layer_fn = || fmt::Layer::new().with_filter(LevelFilter::TRACE);
let (layer, handle) = reload::Layer::new(reloadable_layer_fn());
let subscriber = tracing_subscriber::registry().with(layer);
tracing::subscriber::set_global_default(subscriber).unwrap();
tracing::info!("Before reload");
handle.reload(reloadable_layer_fn()).unwrap();
// Panics here
tracing::info!("After reload");
}
I am not sure, whether both implementations of reloadable_layer_fn
equal or not, but they both seems work in this case.
I expected: After reload
is printed
Instead, this happened: panic on printing After reload
Oct 09 14:59:12.383 INFO tracing_test: Before reload
thread 'main' panicked at 'a `Filtered` layer was used, but it had no `FilterId`; was it registered with the subscriber?', /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/filter/layer_filters.rs:239:9
stack backtrace:
0: std::panicking::begin_panic
at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/panicking.rs:541:12
1: tracing_subscriber::filter::layer_filters::Filtered<L,F,S>::id
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/filter/layer_filters.rs:239:9
2: tracing_subscriber::filter::layer_filters::Filtered<L,F,S>::did_enable::{{closure}}
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/filter/layer_filters.rs:248:57
3: std::thread::local::LocalKey<T>::try_with
at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/thread/local.rs:399:16
4: std::thread::local::LocalKey<T>::with
at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/thread/local.rs:375:9
5: tracing_subscriber::filter::layer_filters::Filtered<L,F,S>::did_enable
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/filter/layer_filters.rs:248:9
6: <tracing_subscriber::filter::layer_filters::Filtered<L,F,S> as tracing_subscriber::layer::Layer<S>>::on_event
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/filter/layer_filters.rs:349:9
7: <tracing_subscriber::reload::Layer<L,S> as tracing_subscriber::layer::Layer<S>>::on_event
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/reload.rs:96:9
8: <tracing_subscriber::layer::layered::Layered<L,S> as tracing_core::subscriber::Subscriber>::event
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-subscriber-0.2.25/src/layer/layered.rs:116:9
9: <alloc::sync::Arc<dyn tracing_core::subscriber::Subscriber+core::marker::Send+core::marker::Sync> as tracing_core::subscriber::Subscriber>::event
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/subscriber.rs:715:9
10: tracing_core::dispatcher::Dispatch::event
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/dispatcher.rs:517:9
11: tracing_core::event::Event::dispatch::{{closure}}
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/event.rs:35:13
12: tracing_core::dispatcher::get_default::{{closure}}
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/dispatcher.rs:331:24
13: std::thread::local::LocalKey<T>::try_with
at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/thread/local.rs:399:16
14: tracing_core::dispatcher::get_default
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/dispatcher.rs:328:5
15: tracing_core::event::Event::dispatch
at /home/flowneee/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-core-0.1.21/src/event.rs:34:9
16: tracing_test::main
at ./src/main.rs:165:5
17: core::ops::function::FnOnce::call_once
at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.