-
Notifications
You must be signed in to change notification settings - Fork 887
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
Minimal implementation is unclear on context propagation #183
Comments
I was wondering the same thing. If you have a noop span, should you still pass through a span context that was received out of band? e.g. service A and C have tracing enabled and service B has tracing disabled. A makes a call to B which makes a call to C. If the minimal noop span in B doesn't pass the context through to C the trace will break at A. I guess it's a trade off of reducing allocations when tracing is disabled vs not breaking traces. I lean towards the latter being the case for a noop implementation.
My gut says the answer is no, if you start a span with no parent and it's a no op implementation, you can leave the span context empty until you reach code that has tracing enabled, which can then determine the sampled flag and all the jazz. |
True, but the "minimal" implementation that is part of the API is not the same as the noop implementation. |
The "minimal implementation" that is referenced here is described as being "part of the API" and "incurring as little performance penalty as possible". This sounds a lot like a no-op implementation to me. Is a there even a section in the specification that makes a clear distinction between:
This is a prerequisite for having this discussion about context propagation at all, I think. |
@z1c0 I don't think there is a section that makes a clear distinction. I asked in gitter before creating this issue and that is where I learned it was distinct. |
I suggest discussing this as part of #208 where I hope we can come to a resolution about this point ;) |
Hi all, I'm closing this in an attempt to resolve this conversation in #208. Please reopen if you feel there is additional scope to this issue. |
I'm starting on the Erlang version of the API and minimal implementation and I find it unclear what exactly it should and shouldn't be doing.
On Gitter Tigran explained that it is not the same as the noop tracer because it is expected to do context propagation. And the spec makes clear it should not return a null span but a valid non-null span object.
What isn't clear is does having context propagation and non-null spans imply that a
startSpan
will create a new child span id as the current context? Or is it expected that the same context as was started with will be what is propagated? If the latter, what about when there is no parent span, then a new span id and trace id must be created?The text was updated successfully, but these errors were encountered: