From 5c5fdb8732705b90caff5c2cc434b138fffc7b71 Mon Sep 17 00:00:00 2001 From: cijothomas Date: Thu, 16 Jul 2026 08:11:14 +0200 Subject: [PATCH 1/3] Clarify SDK processor processed metric boundary --- .../clarify-sdk-processor-processed-boundary.yaml | 11 +++++++++++ docs/otel/sdk-metrics.md | 13 ++++++++++--- model/otel/metrics.yaml | 13 ++++++++++--- 3 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 .chloggen/clarify-sdk-processor-processed-boundary.yaml diff --git a/.chloggen/clarify-sdk-processor-processed-boundary.yaml b/.chloggen/clarify-sdk-processor-processed-boundary.yaml new file mode 100644 index 0000000000..a215d050a7 --- /dev/null +++ b/.chloggen/clarify-sdk-processor-processed-boundary.yaml @@ -0,0 +1,11 @@ +change_type: enhancement + +component: otel + +note: > + Clarify when SDK processors record successful processing and distinguish it + from queue acceptance and exporter completion. + +issues: [1921] + +subtext: diff --git a/docs/otel/sdk-metrics.md b/docs/otel/sdk-metrics.md index 68779b0802..821af17157 100644 --- a/docs/otel/sdk-metrics.md +++ b/docs/otel/sdk-metrics.md @@ -265,7 +265,11 @@ This metric is [recommended][MetricRecommended]. **[1]:** For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Span Processors MUST use `queue_full` as the value of `error.type` for spans dropped due to a full queue. SDK Span Processors MUST use `already_shutdown` as the value of `error.type` for spans dropped because the processor has already been shut down. -For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. +For the SDK Simple and Batching Span Processor, successful processing finishes when the processor invokes the export operation. +For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain +queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless +of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome +of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.span.exported`. **Attributes:** @@ -705,8 +709,11 @@ This metric is [recommended][MetricRecommended]. **[1]:** For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Log Record Processors MUST use `queue_full` as the value of `error.type` for log records dropped due to a full queue. SDK Log Record Processors MUST use `already_shutdown` as the value of `error.type` for log records dropped because the processor has already been shut down. -For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, -not when the corresponding export call has finished. +For the SDK Simple and Batching Log Record Processor, successful processing finishes when the processor invokes the export operation. +For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted +and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, +regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. +The outcome of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.log.exported`. **Attributes:** diff --git a/model/otel/metrics.yaml b/model/otel/metrics.yaml index 07ab94fb43..5f6f637a56 100644 --- a/model/otel/metrics.yaml +++ b/model/otel/metrics.yaml @@ -74,7 +74,11 @@ groups: For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Span Processors MUST use `queue_full` as the value of `error.type` for spans dropped due to a full queue. SDK Span Processors MUST use `already_shutdown` as the value of `error.type` for spans dropped because the processor has already been shut down. - For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished. + For the SDK Simple and Batching Span Processor, successful processing finishes when the processor invokes the export operation. + For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain + queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless + of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome + of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.span.exported`. instrument: counter unit: "{span}" attributes: @@ -191,8 +195,11 @@ groups: For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Log Record Processors MUST use `queue_full` as the value of `error.type` for log records dropped due to a full queue. SDK Log Record Processors MUST use `already_shutdown` as the value of `error.type` for log records dropped because the processor has already been shut down. - For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter, - not when the corresponding export call has finished. + For the SDK Simple and Batching Log Record Processor, successful processing finishes when the processor invokes the export operation. + For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted + and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, + regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. + The outcome of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.log.exported`. instrument: counter unit: "{log_record}" attributes: From 59ee675a96fdace9a7228e5032945630b8db04f5 Mon Sep 17 00:00:00 2001 From: cijothomas Date: Thu, 16 Jul 2026 22:11:48 +0200 Subject: [PATCH 2/3] Remove exporter metric references --- docs/otel/sdk-metrics.md | 4 ++-- model/otel/metrics.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/otel/sdk-metrics.md b/docs/otel/sdk-metrics.md index 821af17157..f74b5e2056 100644 --- a/docs/otel/sdk-metrics.md +++ b/docs/otel/sdk-metrics.md @@ -269,7 +269,7 @@ For the SDK Simple and Batching Span Processor, successful processing finishes w For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome -of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.span.exported`. +of the export operation MUST NOT affect this metric. **Attributes:** @@ -713,7 +713,7 @@ For the SDK Simple and Batching Log Record Processor, successful processing fini For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. -The outcome of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.log.exported`. +The outcome of the export operation MUST NOT affect this metric. **Attributes:** diff --git a/model/otel/metrics.yaml b/model/otel/metrics.yaml index 5f6f637a56..e189279847 100644 --- a/model/otel/metrics.yaml +++ b/model/otel/metrics.yaml @@ -78,7 +78,7 @@ groups: For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome - of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.span.exported`. + of the export operation MUST NOT affect this metric. instrument: counter unit: "{span}" attributes: @@ -199,7 +199,7 @@ groups: For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. - The outcome of the export operation MUST NOT affect this metric and is reported by `otel.sdk.exporter.log.exported`. + The outcome of the export operation MUST NOT affect this metric. instrument: counter unit: "{log_record}" attributes: From f02a3afb8e9c26c651e82d53e578ea7acfaf8a43 Mon Sep 17 00:00:00 2001 From: cijothomas Date: Thu, 16 Jul 2026 23:03:07 +0200 Subject: [PATCH 3/3] Fix SDK processor grammar --- docs/otel/sdk-metrics.md | 4 ++-- model/otel/metrics.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/otel/sdk-metrics.md b/docs/otel/sdk-metrics.md index f74b5e2056..53614a7d13 100644 --- a/docs/otel/sdk-metrics.md +++ b/docs/otel/sdk-metrics.md @@ -265,7 +265,7 @@ This metric is [recommended][MetricRecommended]. **[1]:** For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Span Processors MUST use `queue_full` as the value of `error.type` for spans dropped due to a full queue. SDK Span Processors MUST use `already_shutdown` as the value of `error.type` for spans dropped because the processor has already been shut down. -For the SDK Simple and Batching Span Processor, successful processing finishes when the processor invokes the export operation. +For the SDK Simple and Batching Span Processors, successful processing finishes when the processor invokes the export operation. For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome @@ -709,7 +709,7 @@ This metric is [recommended][MetricRecommended]. **[1]:** For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Log Record Processors MUST use `queue_full` as the value of `error.type` for log records dropped due to a full queue. SDK Log Record Processors MUST use `already_shutdown` as the value of `error.type` for log records dropped because the processor has already been shut down. -For the SDK Simple and Batching Log Record Processor, successful processing finishes when the processor invokes the export operation. +For the SDK Simple and Batching Log Record Processors, successful processing finishes when the processor invokes the export operation. For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. diff --git a/model/otel/metrics.yaml b/model/otel/metrics.yaml index e189279847..2ec762dfac 100644 --- a/model/otel/metrics.yaml +++ b/model/otel/metrics.yaml @@ -74,7 +74,7 @@ groups: For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Span Processors MUST use `queue_full` as the value of `error.type` for spans dropped due to a full queue. SDK Span Processors MUST use `already_shutdown` as the value of `error.type` for spans dropped because the processor has already been shut down. - For the SDK Simple and Batching Span Processor, successful processing finishes when the processor invokes the export operation. + For the SDK Simple and Batching Span Processors, successful processing finishes when the processor invokes the export operation. For batching processors, all spans in the invoked batch are considered processed at this point; spans that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes. The outcome @@ -195,7 +195,7 @@ groups: For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` MUST contain the failure cause. SDK Batching Log Record Processors MUST use `queue_full` as the value of `error.type` for log records dropped due to a full queue. SDK Log Record Processors MUST use `already_shutdown` as the value of `error.type` for log records dropped because the processor has already been shut down. - For the SDK Simple and Batching Log Record Processor, successful processing finishes when the processor invokes the export operation. + For the SDK Simple and Batching Log Record Processors, successful processing finishes when the processor invokes the export operation. For batching processors, all log records in the invoked batch are considered processed at this point; log records that were accepted and remain queued have not yet been processed. Implementations MUST record successful processing when the export operation is invoked, regardless of whether the invocation returns normally or throws, and MUST NOT delay recording until the export operation completes.