diff --git a/specification/api-tracing.md b/specification/api-tracing.md index adaa7c28e23..88cc1186916 100644 --- a/specification/api-tracing.md +++ b/specification/api-tracing.md @@ -559,7 +559,7 @@ Span represents a synchronous call. When a child span is synchronous, the parent is expected to wait for it to complete under ordinary circumstances. It can be useful for tracing systems to know this property, since synchronous Spans may contribute to the overall trace -latency. +latency. Asynchronous scenarios can be remote or local. In order for `SpanKind` to be meaningful, callers should arrange that a single Span does not serve more than one purpose. For example, a @@ -579,9 +579,11 @@ These are the possible SpanKinds: * `PRODUCER` Indicates that the span describes the parent of an asynchronous request. This parent span is expected to end before the corresponding child `CONSUMER` span, possibly even before the - child span starts. + child span starts. In messaging scenarios with batching, tracing + individual messages requires a new `PRODUCER` span per message to + be created. * `CONSUMER` Indicates that the span describes the child of an - asynchronous remote `PRODUCER` request. + asynchronous `PRODUCER` request. * `INTERNAL` Default value. Indicates that the span represents an internal operation within an application, as opposed to an operations with remote parents or children. @@ -592,6 +594,6 @@ To summarize the interpretation of these kinds: |--|--|--|--|--| | `CLIENT` | yes | | | yes | | `SERVER` | yes | | yes | | -| `PRODUCER` | | yes | | yes| -| `CONSUMER` | | yes | yes | | +| `PRODUCER` | | yes | | maybe | +| `CONSUMER` | | yes | maybe | | | `INTERNAL` | | | | |