getsentry / getsentry/sentry-javascript

Store metadata on spans separately from attributes

Offen
#22,670 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Feature javascript Spans
Vorherrschende Sprache
TypeScript
Sterne
8.7k
Forks
1.8k
Ø Merge
1 T. 17 Std.
Gemergte PRs (30 T.)
515

Beschreibung

Currently, our SDK stores metadata on spans in attributes that it cleans up before sending them. This isn't ideal, since it happened multiple times that such attributes were still sent because some code path sending spans or transactions didn't perform the cleanup.

Some examples:
- `sentry.sample_rate`
- `sentry.parentIsRemote`
- `sentry.custom_span_name`

It also makes things a bit awkward with sentry conventions. Adding these attributes has no value and they shouldn't be sent anyway.

It's easiest to store this information (which we need at runtime) on a separate field on the span, which never gets serialized to JSON and thus not sent.

This could work like so:

```js
const span = getActiveSpan();

span._metadata = {
sampleRate: 0.99;
}

// or

span.getMetadata().sampleRate = 0.99;

// or

getSpanMetadata(span).sampleRate = 0.99;
```

Which should now be possible, given all spans in the SDK will be ` instanceof SentrySpan` with v11.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start with the getActiveSpan entry point and the SentrySpan implementation, then trace how span metadata is currently stored and serialized to JSON. Done means runtime-only values such as sampleRate, parentIsRemote, and custom_span_name use separate metadata and are never included in serialized spans or transactions.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
observability-sre
Issue-Typ
Refactoring
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.