PR #973 changed the `tokio_trace_core::span::Id::from_u64` function to require that the provided `u64` be greater than zero. However, I had forgotten that the implementation of `Subscriber` for the `NoSubscriber` type (which is used when no default subscriber is set) always returned `span::Id::from_u64(0)` from its `new_span` method. In combination with the assert added in #973, this means that every time a span is hit when no subscriber is set, `tokio-trace-core` will panic. This branch fixes the panics by having `NoSubscriber` construct span IDs using a different (arbitrarily chosen) non-zero constant. Signed-off-by: Eliza Weisman <[email protected]>
tokio-trace-core
Core primitives for tokio-trace.
Overview
tokio-trace is a framework for instrumenting Rust programs to collect
structured, event-based diagnostic information. This crate defines the core
primitives of tokio-trace.
The crate provides:
-
Spanidentifies a span within the execution of a program. -
Eventrepresents a single event within a trace. -
Subscriber, the trait implemented to collect trace data. -
Field,FieldSet,Value, andValueSetrepresent the structured data attached to aSpan. -
Dispatchallows span events to be dispatched toSubscribers.
In addition, it defines the global callsite registry and per-thread current dispatcher which other components of the tracing system rely on.
Application authors will typically not use this crate directly. Instead, they
will use the tokio-trace crate, which provides a much more fully-featured
API. However, this crate's API will change very infrequently, so it may be used
when dependencies must be very stable.
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tokio by you, shall be licensed as MIT, without any additional terms or conditions.