pub struct PlanTrace<T> {
    find: Option<&'static str>,
    path: Mutex<String>,
    times: Mutex<Vec<Instant>>,
    entries: Mutex<Vec<TraceEntry<T>>>,
}
Expand description

A tracing layer used to accumulate a sequence of explainable plans.

Fields§

§find: Option<&'static str>

A specific concrete path to find in this trace. If present, PlanTrace::push will only collect traces if the current path is a prefix of find.

§path: Mutex<String>

A path of segments identifying the spans in the current ancestor-or-self chain. The current path is used when accumulating new entries.

§times: Mutex<Vec<Instant>>

A path of times at which the spans in the current ancestor-or-self chain were started. The duration since the last time is used when accumulating new entries.

§entries: Mutex<Vec<TraceEntry<T>>>

A sequence of entries associating for a specific plan type T.

Implementations§

Create a new trace for plans of type T.

Create a new trace for plans of type T that will only accumulate TraceEntry instances along the prefix of the given path.

Drain the trace data collected so far.

Note that this method will mutate the internal state of the enclosing PlanTrace even though its receiver is not &mut self. This quirk is required because the tracing Dispatch does not have downcast_mut method.

Push a trace entry for the given plan to the current trace.

This is a noop if (1) the call is within a context without an enclosing span, or if (2) PlanTrace::find is set and the current path is not a prefix of its value.

Helper method: get a copy of the current path.

If PlanTrace::find is set, this will also check the current path against the find entry and return None if the former is not a prefix of the latter.

Trait Implementations§

A layer::Layer implementation for PlanTrace.

Populates the data wrapped by the PlanTrace instance with TraceEntry values, one for each span with attached plan in its extensions map.

Notifies this layer that a new span was constructed with the given Attributes and Id.
Notifies this layer that a span with the given ID was entered.
Notifies this layer that the span with the given ID was exited.
Performs late initialization when installing this layer as a Subscriber. Read more
Performs late initialization when attaching a Layer to a Subscriber. Read more
Registers a new callsite with this layer, returning whether or not the layer is interested in being notified about the callsite, similarly to Subscriber::register_callsite. Read more
Returns true if this layer is interested in a span or event with the given metadata in the current Context, similarly to Subscriber::enabled. Read more
Notifies this layer that a span with the given Id recorded the given values.
Notifies this layer that a span with the ID span recorded that it follows from the span with the ID follows.
Called before on_event, to determine if on_event should be called.
Notifies this layer that an event has occurred.
Notifies this layer that the span with the given ID has been closed.
Notifies this layer that a span ID has been cloned, and that the subscriber returned a different ID.
Composes this layer around the given Layer, returning a Layered struct implementing Layer. Read more
Composes this Layer with the given Subscriber, returning a Layered struct that implements Subscriber. Read more
Combines self with a Filter, returning a Filtered layer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Attaches the current Context to this type, returning a WithContext wrapper. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Wrap the input message T in a tonic::Request
Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more