fix(otel): end recording spans on non-terminal invocations - #671
Draft
ayushiahjolia wants to merge 1 commit into
Draft
fix(otel): end recording spans on non-terminal invocations#671ayushiahjolia wants to merge 1 commit into
ayushiahjolia wants to merge 1 commit into
Conversation
Both OTel plugins abandoned recording spans without ending them when a durable execution returned a non-terminal status, violating the OTel requirement that every created span be ended. The execution plugin dropped open operation spans on PENDING/RETRY, and both plugins dropped the execution-scoped Workflow span on non-terminal invocations. Replace the eager recording Workflow span with a non-recording deterministic placeholder held during the invocation. The placeholder still carries the deterministic trace and span IDs, so it parents and links operation spans, keeps the Workflow current for auto-instrumented spans, and serves log correlation - without leaving a recording span to abandon. The recording Workflow span is created and ended exactly once, only on a terminal status, anchored at the execution start time. The execution plugin now also ends any operation spans still open at invocation end, matching the invocation plugin. Cross-invocation correlation is unchanged: an operation that resumes later still gets its authoritative span from on_operation_end. Closes #642
ayushiahjolia
requested a deployment
to
ai-pr-review
August 21, 2026 17:24 — with
GitHub Actions
Waiting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
#642
Description of changes:
Both OTel plugins abandoned recording spans without ending them when a durable execution returned a non-terminal status, violating the OTel requirement that every created span be ended. The execution plugin dropped open operation spans on PENDING/RETRY, and both plugins dropped the execution-scoped Workflow span on non-terminal invocations.
Replace the eager recording Workflow span with a non-recording deterministic placeholder held during the invocation. The placeholder still carries the deterministic trace and span IDs, so it parents and links operation spans, keeps the Workflow current for auto-instrumented spans, and serves log correlation - without leaving a recording span to abandon. The recording Workflow span is created and ended exactly once, only on a terminal status, anchored at the execution start time.
The execution plugin now also ends any operation spans still open at invocation end, matching the invocation plugin. Cross-invocation correlation is unchanged: an operation that resumes later still gets its authoritative span from on_operation_end.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.