diff --git a/specification/trace/sdk.md b/specification/trace/sdk.md index f42b23e3474..08fb3da889f 100644 --- a/specification/trace/sdk.md +++ b/specification/trace/sdk.md @@ -231,9 +231,9 @@ Thus, the SDK specification defines sets of possible requirements for ## TraceState manipulation -`TraceState` is a part of [`SpanContext`](./api.md#spancontext), represented by a list of key-values pairs and +`TraceState` is a part of [`SpanContext`](./api.md#spancontext), represented by a list of string key-values pairs and formally defined by [W3C specification](https://www.w3.org/TR/trace-context/#tracestate-header). -Tracing SDK MUST provide at least the following mutation operations on `TraceState`: +Tracing SDK MUST provide at least the following operations on `TraceState` which return a new `TraceState` with the modifications applied: * Update key value * Add a new key/value pair @@ -245,7 +245,7 @@ Please note, that as `SpanContext` is immutable, it is not possible to update `S Such changes then make sense only right before [`SpanContext` propagation](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/context/api-propagators.md) or [telemetry data exporting](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#span-exporter). -In both cases `Propagators` and `SpanExporters` may modify `TraceState` before serializing it to the wire. +In both cases `Propagators` and `SpanExporters` may create a modified `TraceState` copy before serializing it to the wire. ## Span processor