open-telemetry / oteps

OpenTelemetry Enhancement Proposals
https://opentelemetry.io
Apache License 2.0
337 stars 164 forks source link

Export SpanContext.IsRemote in OTLP #182

Closed axw closed 1 year ago

axw commented 2 years ago

Proposal to update OTLP to indicate whether a span's parent is remote.

axw commented 2 years ago

@open-telemetry/specs-approvers can I please get some reviews on this?

anuraaga commented 2 years ago

@open-telemetry/specs-approvers Can you please review this otep?

tigrannajaryan commented 2 years ago

@axw sorry for late reply, this fall off my radar (and thanks for reminding). The proposal looks reasonable to me.

If we end up adding flags field to Span in OTLP as proposed here I think we can record the IsRemote as a bit in the flags (which makes it zero cost in memory and very small cost on the wire).

tigrannajaryan commented 2 years ago

@bogdandrutu I think you discussed this in OpenCensus too. PTAL.

Oberon00 commented 2 years ago

If we end up adding flags field to Span in OTLP as proposed here I think we can record the IsRemote as a bit in the flags

This is a very nice idea that may lead to much trouble and head-scratching if whatever bit we choose gets a meaning assigned in W3C. Unless we make our "flags" larger than the W3C trace flags, but then it's not zero-cost (and in theory, the W3C trace flags field might have more bits an a future traceparent header version).

tigrannajaryan commented 2 years ago

If we end up adding flags field to Span in OTLP as proposed here I think we can record the IsRemote as a bit in the flags

This is a very nice idea that may lead to much trouble and head-scratching if whatever bit we choose gets a meaning assigned in W3C. Unless we make our "flags" larger than the W3C trace flags, but then it's not zero-cost (and in theory, the W3C trace flags field might have more bits an a future traceparent header version).

Our flags are already larger than W3C trace flags. We reserve 8 bits for W3C trace flags (of which only 1 bit is defined by W3C currently) and the remaining 24 bits in our flags are available for anything else we want to use it for. If W3C in the future decides to come up with more than 8 bits of flags they have to do it in a very explicit way, in which case we can also follow what they do.

axw commented 2 years ago

@bogdandrutu ICYMI Tigran's comment above (https://github.com/open-telemetry/oteps/pull/182#issuecomment-1132111698):

I think you discussed this in OpenCensus too. PTAL.

Could you please take a look?

axw commented 2 years ago

Thanks for chiming in @willarmiros, and to everyone who has reviewed so far.

I'd also love to get this merged. IIANM, there's still 3 more reviews required. I suppose the grey check approvals are not code owners, and don't count towards the required "4 approving reviews".

@open-telemetry/specs-approvers please take a look. If more clarification is needed, please let me know. I'd be happy to have a meeting if it helps, bearing in mind I'm UTC+8.

AlexanderWert commented 1 year ago

@open-telemetry/specs-approvers Is anything missing in this proposal to get approvals / reviews?

There seems to be quite some interest for this and also https://github.com/open-telemetry/opentelemetry-proto/pull/384 seems to be waiting on this.

axw commented 1 year ago

This was closed in error -- https://github.com/open-telemetry/opentelemetry-specification/pull/3257 is a prerequisite clarification, it doesn't resolve this PR overall.

Can someone with permissions please reopen? (I can't.)

Oberon00 commented 1 year ago

It seems that the syntax "resolves https://github.com/open-telemetry/oteps/pull/182#discussion_r971857784" resolves the whole PR to which the linked comment belongs. Sorry for that.

AlexanderWert commented 1 year ago

@open-telemetry/specs-approvers as the main discussion points have been addressed, can we proceed with this proposal to expose the parent->isRemote information (as a protobuf field) on a serialized spans and merge this proposal?

tsloughter commented 1 year ago

Carrying on from the Zoom chat today in the Spec SIG meeting:

I found that my question was covered here https://github.com/open-telemetry/oteps/pull/182/files#r969043021 and specifically resolved by the patch to the spec here https://github.com/open-telemetry/opentelemetry-specification/pull/3257

MUST expose at least the full parent SpanContext.

So in the case of Erlang at least we simply need to update to comply with the latest spec and include a copy of the parent SpanContext in the Span and not just the SpanId.

The other discussion was around whether IsRemote really means "remote" since it could be propagated from within the same process -- example being propagating a context from C++ called through the JNI or an Erlang NIF.

But what "is remote" I don't think is seen by anyone as anything to block this OTEP, rather a discussion to be had separately that was prompted by this OTEP.

Oberon00 commented 1 year ago

IsRemote today means IsExtracted, or "span ID not guaranteed to be generated by this TracerProvider instance"

carlosalberto commented 1 year ago

I suggest we have the discussion regarding the naming ("is remote or not") as part of making this into the Specification (where we will have to update the proto files with the proper documentation docs anyway).

Oberon00 commented 1 year ago

I suggest we have the discussion regarding the naming

I strongly suggest to stay with "IsRemote" for storing what the spec already calls IsRemote in the API (where we can't rename it)

carlosalberto commented 1 year ago

@open-telemetry/specs-approvers We have enough approvals so I will merge in the next couple of days. Please raise your voice if you want to do a review before that.

carlosalberto commented 1 year ago

@axw We are ready to merge, but we need to get the lint check to pass. Can you check what's happening? https://app.circleci.com/pipelines/github/open-telemetry/oteps/1593/workflows/eadc0058-1700-47a1-b96a-60abff61c475/jobs/2588

graphaelli commented 1 year ago

@carlosalberto would you accept the suggestions to address the markdown linting issues?

carlosalberto commented 1 year ago

Merged. Please start preparing the PR(s) to include this change in the Spec + proto repositories.