Skip to content

Store metadata on spans separately from attributes #22670

Description

@Lms24

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:

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions