Per definition of Span.flags and Link.flag which are the same, I am confused what value to use and where.
For Span:
// Flags, a bit field.
//
// Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace
// Context specification. To read the 8-bit W3C trace flag, use
// `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`.
//
// See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.
//
// Bits 8 and 9 represent the 3 states of whether a span's parent
// is remote. The states are (unknown, is not remote, is remote).
// To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.
// To read whether the span is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.
//
// When creating span messages, if the message is logically forwarded from another source
// with an equivalent flags fields (i.e., usually another OTLP span message), the field SHOULD
// be copied as-is. If creating from a source that does not have an equivalent flags field
// (such as a runtime representation of an OpenTelemetry span), the high 22 bits MUST
// be set to zero.
// Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.
For Link:
// Flags, a bit field.
//
// Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace
// Context specification. To read the 8-bit W3C trace flag, use
// `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`.
//
// See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.
//
// Bits 8 and 9 represent the 3 states of whether the link is remote.
// The states are (unknown, is not remote, is remote).
// To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.
// To read whether the link is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.
//
// Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.
// When creating new spans, bits 10-31 (most-significant 22-bits) MUST be zero.
//
// [Optional].
Is it true that for the Span.flag we expect the Bits 0-7 to be the TraceFlags of the current Span (not the parent), but the remote property is for the parent. For the Link.flag we expect the Bits 0-7 to be the TraceFlags of the linked SpanContext as well as the remote property. The confusion I have is that where do we have the Span parent's SpanContext TraceFlags? If they are important for links why not having them for parent (which is in some way a more special link)?
Per definition of Span.flags and Link.flag which are the same, I am confused what value to use and where.
For Span:
For Link:
Is it true that for the Span.flag we expect the
Bits 0-7
to be the TraceFlags of the current Span (not the parent), but the remote property is for the parent. For the Link.flag we expect theBits 0-7
to be the TraceFlags of the linked SpanContext as well as the remote property. The confusion I have is that where do we have the Span parent's SpanContext TraceFlags? If they are important for links why not having them for parent (which is in some way a more special link)?