Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

opentelemetry: Add PreSampledTracer interface #962

Merged
merged 4 commits into from
Sep 1, 2020

Conversation

jtescher
Copy link
Collaborator

@jtescher jtescher commented Sep 1, 2020

Motivation

Currently the OpenTelemetryLayer is coupled to the opentelemetry SDK in a way that makes using alternate API implementations difficult (they would have to use the SDK's sampler and id generator) as well as causing duplication when specifying sampler configuration (it must currently be set on both the tracer provider configuration as well as the layer configuration, which is difficult to remember to keep in sync).

Solution

This change creates an interface for working with pre-sampled tracers, and implements it for the current opentelemetry SDK. This simplifies the layer as it no longer needs to track an id generator or sampler, and allows other otel API implementations to implement the trait rather than rely on the current SDK.

## Motivation

Currently the `OpenTelemetryLayer` is coupled to the opentelemetry SDK
in a way that makes using alternate API implementations difficult (they
would have to use the SDK's sampler and id generator) as well as causing
duplication when specifying sampler configuration (it must currently be
set on both the tracer provider configuration as well as the layer
configuration, which is difficult to remember to keep in sync).

## Solution

This change creates an interface for working with pre-sampled tracers,
and implements it for the current opentelemetry SDK. This simplifies the
layer as it no longer needs to track an id generator or sampler, and
allows other otel API implementations to implement the trait rather than
rely on the current SDK.
@jtescher jtescher added the crate/opentelemetry Related to the `tracing-opentelemetry` crate. label Sep 1, 2020
@jtescher jtescher requested a review from a team as a code owner September 1, 2020 17:49
Comment on lines -288 to -291
pub fn new<Sampler>(tracer: T, sampler: Sampler) -> Self
where
Sampler: sdk::ShouldSample + 'static,
{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a breaking API change --- does it make sense to leave the new constructor as-is, and add a new constructor that takes just a tracer, or does that not make sense?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could keep as is for a deprecation cycle, the sampler is no longer needed but the method could still accept one.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually deprecation isn't really what we want here unless we want another name, but with_tracer already exists. Maybe best to just go with the breaking change as it is trivial to not include the parameter and it would only be called once during initialization.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I'm fine with the breaking change if it's the best option.

tracing-opentelemetry/src/layer.rs Outdated Show resolved Hide resolved
tracing-opentelemetry/src/tracer.rs Outdated Show resolved Hide resolved
tracing-opentelemetry/src/tracer.rs Show resolved Hide resolved
tracing-opentelemetry/src/tracer.rs Show resolved Hide resolved
jtescher and others added 3 commits September 1, 2020 12:14
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
@jtescher jtescher merged commit 3bda893 into master Sep 1, 2020
@jtescher jtescher deleted the jtescher/pre-sampled-opentelemetry-tracer branch September 1, 2020 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crate/opentelemetry Related to the `tracing-opentelemetry` crate.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants