Lifting some more dependencies to the workspace. Just using the most-often updated ones for now. It can be reproduced locally. ```sh # First you can check if there would be semver incompatible bumps (looks good in this case): $ zepter transpose dependency lift-to-workspace --ignore-errors syn quote thiserror "regex:^serde.*" # Then apply the changes: $ zepter transpose dependency lift-to-workspace --version-resolver=highest syn quote thiserror "regex:^serde.*" --fix # And format the changes: $ taplo format --config .config/taplo.toml ``` --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
tracing-gum
"gum" to make tracing::{warn,info,..} and mick-jaeger stick together, to be
cross referenced in grafana with zero additional loc in the source code.
Usage
See the crate docs (e.g. run cargo doc --open) for usage information!
Architecture Decision Record (ADR)
Context
For cross referencing spans and logs in grafana loki and tempo, a shared
traceID or TraceIdentifier is required. All logs must be annotated with such
meta information.
In most cases CandidateHash is the primary identifier of the jaeger::Span
and hence the source from which the traceID is derived. For cases where it is
not the primary identifier, a helper tag named traceID is added to those
spans (out of scope, this is already present as a convenience measure).
Log lines on the other hand side, use warn!,info!,debug!,trace!,.. API
provided by the tracing crate. Many of these, contain a candidate_hash,
which is not equivalent to the traceID (256bits vs 128bits), and hence must
be derived.
To achieve the cross ref, either all instances of candidate_hash could be
added or this could be approached more systematically by providing a macro to
automatically do so.
Related issues:
Decision
Adding approx. 2 lines per tracing line including a candidate_hash reference,
to derive the TraceIdentifier from that, and printing that as part of the
key-value section in the tracing::* macros. The visual overhead and friction
and required diligence to keep the 100s of tracing::{warn!,info!,debug!,..} up
is unreasonably high in the mid/long run. This is especially true, in the
context of more people joining the team. Hence a proc-macro is introduced
which abstracts this away, and does so automagically at the cost of
one-more-proc-macro in the codebase.
Consequences
Minimal training/impact is required to name CandidateHash as candidate_hash
when providing to any of the log macros (warn!, info!, etc.).
The crate has to be used throughout the entire codebase to work consistently, to
disambiguate, the prefix gum:: is used.
Feature Parity with tracing::{warn!,..} is not desired. We want consistency
more than anything. All currently used features are supported with gum as
well.