Skip to content

Tracing without Performance #1525

@cleptric

Description

@cleptric
### Tasks
- [x] All events are always sent through the `/envelope` endpoint if performance is enabled. #1518
- [x] Add a mechanism to continue a trace from environment variables. #1519
- [x] All **error**, **transaction** and **check-in** events sent to Sentry always contain a Dynamic Sampling Context (trace) envelope header item. #1516
- [x] All **error, transaction** and **check-in** sent to Sentry always contain [a `trace` context](https://develop.sentry.dev/sdk/event-payloads/contexts/#trace-context). #1516
- [x] All outgoing **HTTP requests** always contain a `sentry-trace` and `baggage` header if the destination is allow-listed in [trace_propagation_targets](https://develop.sentry.dev/sdk/performance/#tracepropagationtargets). #1547

To always have access to a trace and span ID, add a new internal PropagationContext property to the scope, an object holding a traceId and spanId and an optional dynamicSamplingContext.

Populate the traceId and spanId with valid, random IDs on construction.

You may update the traceId and dynamicSamplingContext from the request headers during an incoming request or if the process was exposed to a SENTRY_TRACE and/or SENTRY_BAGGAGE environment variable if performance is disabled.

The Dynamic Sampling Context should be lazily constructed once needed, using a new fromOptions function that constructs the DSC based on the client options if performance is disabled.

When captureEvent is called, you may use these values on the scope as a fallback to construct the trace context and envelope header item if no transaction exists in the SDK.

For outgoing HTTP requests, use the values in the scope as a fallback if no transaction is present. The sentry-trace will contain a trailing -0 indicating an unsampled transaction.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions