Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project: Tracing without Performance #5

Open
13 of 21 tasks
HazAT opened this issue Mar 23, 2023 · 6 comments
Open
13 of 21 tasks

Project: Tracing without Performance #5

HazAT opened this issue Mar 23, 2023 · 6 comments

Comments

@HazAT
Copy link
Member

HazAT commented Mar 23, 2023

Project Board

See our project board to track this initiative across all SDKs

Web Frontend SDKs

  1. 23 of 25
    Feature: Performance Package: core Status: Backlog
    AbhiPrasad
  2. Feature: performance Type: Enhancement
    timfish

Web Backend SDKs

  1. 1 of 4
    Status: Backlog Type: Feature
    cleptric
  2. 5 of 5
    Status: In Progress Type: Feature Type: Improvement
    cleptric
  3. enhancement
    antonpirker sentrivana
  4. Platform: Android Platform: Java
    adinauer
  5. Status: Backlog Type: Improvement
    cleptric
  6. Status: Backlog Type: Improvement
    cleptric
  7. Feature
    bitsandfoxes
  8. 5 of 7
    enhancement
    sl0thentr0py
  9. Platform: Unity

Mobile SDKs

  1. Platform: Cocoa
    brustolin
  2. Distributed Tracing Platform: Dart
    buenaflor
  3. 2 of 3
    Platform: React-Native

Description

Internal Notion Page:
https://www.notion.so/sentry/Tracing-without-performance-efab307eb7f64e71a04f09dc72722530

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.

Task List for each SDK

@HazAT HazAT changed the title Tracing (propagation) without Performance (Draft) Tracing (propagation) without Performance Mar 23, 2023
@HazAT HazAT changed the title (Draft) Tracing (propagation) without Performance Tracing (propagation) without Performance instrumentation in SDKs Mar 24, 2023
@sl0thentr0py
Copy link
Member

sl0thentr0py commented Mar 24, 2023

So I am fine with doing something quick right now to unblock replay without needing majors. But eventually, we should solve this properly in majors by decoupling Propagation from start_transaction and having a separate well-defined abstraction as discussed with @cleptric and @AbhiPrasad ealrier.

@HazAT
Copy link
Member Author

HazAT commented Mar 24, 2023

@sl0thentr0py full ack - eventually, with Starfish and potentially having just Spans, we are going to revamp this and make it way more straightforward and also internally less complex.

@HazAT
Copy link
Member Author

HazAT commented Mar 27, 2023

ref: getsentry/sentry#45529

@bruno-garcia
Copy link
Member

(consider enableTracing)

I recall proposing this earlier when it was being introduced. My understanding is that today this means tracesSampleRate=1.0 which means turning that on by itself will cause someone to burn through their quota quickly.
Does it mean the documentation would need to be:

enableTracing=true;
tracesSampleRate=0

?

@HazAT
Copy link
Member Author

HazAT commented Apr 11, 2023

@bruno-garcia yes or a new flag - or just tracing origin setting 🙃

@bruno-garcia
Copy link
Member

For the Replay 'Connect to Backend Errors' feature to light up, we need getsentry/team-webplatform-meta#45 which doesn't depend on this work. Through getsentry/team-webplatform-meta#45 we at least get errors on backend errors when Performance monitoring is turned on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

6 participants