-
Notifications
You must be signed in to change notification settings - Fork 36
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
feat: context propagation #227
Conversation
2052007
to
4bf0ead
Compare
Signed-off-by: Lukas Reining <[email protected]>
4bf0ead
to
dc58b11
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, thanks for getting this started. I left a few comments and hopefully others will weigh in soon now that the holidays are wrapping up.
I could go either way on the requirement numbering. However, I have a slight preference for leaving the ordering as is.
… no-op Signed-off-by: Lukas Reining <[email protected]>
Hey @lukas-reining - sorry for a slow response from my part on this. I will be reviewing this first thing on Monday. |
Co-authored-by: Michael Beemer <[email protected]> Signed-off-by: Lukas Reining <[email protected]>
Signed-off-by: Lukas Reining <[email protected]>
Signed-off-by: Lukas Reining <[email protected]>
d3d4b1e
to
fed54fb
Compare
Co-authored-by: Kavindu Dodanduwa <[email protected]> Signed-off-by: Lukas Reining <[email protected]>
I wouldn't consider myself a polyglot developer, so I have some concerns about how this could be implemented in languages like Rust and Go. Perhaps we should change RFC-2119 keyword to "SHOULD" or "MAY" to avoid requiring a feature that can't reasonably be implemented in some technologies. @sheepduke what are your thoughts from Rust perspective? |
Co-authored-by: Kavindu Dodanduwa <[email protected]> Signed-off-by: Lukas Reining <[email protected]>
@beeme1mr wrote #227 (comment):
I'm relatively new to Go, but to me this sounds quite comparable to how OTel trace and baggage propagation works, i.e., via the For example, if I want to start a child trace in Go, I can write: const scopeName = "github.com/some-repo/some-module"
func someFunc(ctx context.Context) error {
// create a new child span from the incoming ctx, and overwrite/shadow it with a new ctx
ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer(scopeName).Start(ctx, "some_func")
defer span.End()
// do stuff covered by the child span
// ...
// ...
// now call into someOtherFunc, passing the overwritten/shadowed ctx
return someOtherFunc(ctx)
}
func someOtherFunc(ctx context.Context) error {
ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer(scopeName).Start(ctx, "some_other_function")
defer span.End()
// do stuff covered by the child (grandchild?) span
// ...
// ...
return nil
} With the resulting span looking something like:
or if the caller to
Related
|
Yes exactly, this is how it was meant. |
I would be fine with this, but my feeling is that there should be a way in all languages. But to be sure we could also just go for |
@beeme1mr If we go for |
I would just add a short blurb in the non-normative section. |
I think you could do a single condition and put everything under that if you want, but I also think you could get away without one. You could use a should/may and then just say "the transaction propagation implementation must..." and I think people would probably interpret that as not applicable. |
Signed-off-by: Lukas Reining <[email protected]>
I chose to add a condition now @toddbaert @beeme1mr. It feels the cleanest to me this way. The only concern I have is the deep nesting, something like 3.3.1.2.1 feels pretty heavy but it feels better than having conditions or assumptions in the spec sentences. |
Signed-off-by: Lukas Reining <[email protected]>
c77e5d3
to
98030e8
Compare
Signed-off-by: Lukas Reining <[email protected]>
I'm OK with the deep nesting. I hope we never have to go deeper than 5, but I think it's fine. |
As said in the community meeting we have enough approvals now and it seems that we have a consensus. |
This PR
Adds context propagation as described in #81.
To me it looks like this should be implementable in all the current languages.
The following things I am not sure on:
Related Issues
Fixes #81