Skip to content

feat(tracing): add baggage and correlation context API #8

@CalvinAllen

Description

@CalvinAllen

Summary

Add a simple API for managing OpenTelemetry Baggage - key-value pairs that propagate across span boundaries. Useful for correlation IDs, user sessions, and feature tracking.

Use Cases

  • Track user session across all operations
  • Correlate related operations with a request ID
  • Tag all spans with feature flag values
  • Pass context through async operations

Proposed API

// Set baggage that flows to all child spans
VsixTelemetry.SetBaggage("session.id", sessionId);
VsixTelemetry.SetBaggage("user.tier", "premium");

// Get baggage value
var sessionId = VsixTelemetry.GetBaggage("session.id");

// Get all baggage
var allBaggage = VsixTelemetry.GetAllBaggage();

// Scoped baggage (auto-removes on dispose)
using (VsixTelemetry.WithBaggage("operation.id", operationId))
{
    // All spans created here will have this baggage
}

// Clear specific baggage
VsixTelemetry.RemoveBaggage("session.id");

Implementation Notes

  • Wrap System.Diagnostics.Baggage API
  • Ensure baggage propagates correctly with context
  • Consider adding automatic baggage-to-tag conversion option

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions