[Shim] Implement StartOperation/StopOperation with W3C trace context support #3012
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.
Fix Issue # .
Changes
Implements
StartOperationextension methods forTelemetryClientto enable manual operation tracking with proper W3C trace context propagation and Activity lifecycle management.API Surface
Three
StartOperation<T>overloads added:StartOperation<T>(operationName, operationId, parentOperationId)- Explicit trace/span ID control for distributed tracing scenariosStartOperation<T>(operationTelemetry)- Initialize from pre-configured telemetry objectStartOperation<T>(activity)- Link existing Activity to telemetry (e.g., from message queues, manual instrumentation)Returns
IOperationHolder<T>that auto-tracks telemetry onDispose().Core Fixes
Parent ID handling: Only set
Context.Operation.ParentIdwhen non-default to prevent invalid "0000000000000000" values on root operations.Ambient activity suppression: Root operations (no parent span) now suppress
Activity.Currentduring creation to prevent incorrect parent relationships. Suppressed activity restored on dispose if still active.Operation name consistency: Set on both Activity tags and
Context.Operation.Namefor reliable retrieval.Activity integration: Baggage and tags from existing Activity copied to telemetry properties for context preservation.
Supporting Changes
OperationHolder<T>tracks and restores suppressed ambient activitiesDependencyTelemetryandExceptionTelemetryinitializePropertiesdictionary in constructorsBasicConsoleAppupdated with working examplesUsage Example
Checklist
For significant contributions please make sure you have completed the following items:
The PR will trigger build, unit tests, and functional tests automatically. Please follow these instructions to build and test locally.
Notes for authors:
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.