
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 <eliza@buoyant.io>
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:
-
Span
identifies a span within the execution of a program. -
Event
represents a single event within a trace. -
Subscriber
, the trait implemented to collect trace data. -
Field
,FieldSet
,Value
, andValueSet
represent the structured data attached to aSpan
. -
Dispatch
allows span events to be dispatched toSubscriber
s.
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.