diff --git a/substrate/client/executor/runtime-test/src/lib.rs b/substrate/client/executor/runtime-test/src/lib.rs index f4cef65b629aa2ad3a1c61cc0427aee845961ba2..bfba4ef039395f87a0dc71c1c3f933526927fe12 100644 --- a/substrate/client/executor/runtime-test/src/lib.rs +++ b/substrate/client/executor/runtime-test/src/lib.rs @@ -261,6 +261,17 @@ sp_core::wasm_export_functions! { wasm_tracing::exit(span_id) } + fn test_nested_spans() { + sp_io::init_tracing(); + let span_id = wasm_tracing::enter_span(Default::default()); + { + sp_io::init_tracing(); + let span_id = wasm_tracing::enter_span(Default::default()); + wasm_tracing::exit(span_id); + } + wasm_tracing::exit(span_id); + } + fn returns_mutable_static() -> u64 { unsafe { MUTABLE_STATIC += 1; diff --git a/substrate/client/executor/src/integration_tests/mod.rs b/substrate/client/executor/src/integration_tests/mod.rs index 08771847c25fda424ac8d27dec0a024926dab7fa..62368441f58696b48d4f17022fbe58884611e8ca 100644 --- a/substrate/client/executor/src/integration_tests/mod.rs +++ b/substrate/client/executor/src/integration_tests/mod.rs @@ -719,6 +719,15 @@ fn wasm_tracing_should_work(wasm_method: WasmExecutionMethod) { assert_eq!(span_datum.target, "default"); assert_eq!(span_datum.name, ""); assert_eq!(values.bool_values.get("wasm").unwrap(), &true); + + call_in_wasm( + "test_nested_spans", + Default::default(), + wasm_method, + &mut ext, + ).unwrap(); + let len = traces.lock().unwrap().len(); + assert_eq!(len, 2); } #[test_case(WasmExecutionMethod::Interpreted)] diff --git a/substrate/primitives/io/src/lib.rs b/substrate/primitives/io/src/lib.rs index 382a0c4b3bd6aed7b4db675530d0d5c8574915cb..d812baefb57ed54aa8254b8c7dd065c7e3734e78 100644 --- a/substrate/primitives/io/src/lib.rs +++ b/substrate/primitives/io/src/lib.rs @@ -1093,7 +1093,7 @@ mod tracing_setup { }; use super::{wasm_tracing, Crossing}; - const TRACING_SET : AtomicBool = AtomicBool::new(false); + static TRACING_SET: AtomicBool = AtomicBool::new(false); /// The PassingTracingSubscriber implements `tracing_core::Subscriber`