Skip to content

TransactionTracer.SetData is not equivalent to TransactionTracer.Contexts.Trace.SetData #4140

Description

@Flash0ver

"data" set via TransactionTracer.SetData is not written to "Data" of the Trace-Context, and does not get copied over to SentryTransaction when created from the tracer.
But "data" set via TransactionTracer.Contexts.Trace.SetData is written to "Data" of the Trace-Context, and gets copied over to SentryTransaction when created from the tracer.

However, SentryTransaction.SetData and SentryTransaction.Contexts.Trace.SetData are equivalent setting "Data" of the Trace-Context.
With Spans, both setting "data" via SpanTracer.SetData and SentrySpan.SetData are eventually serialized to spans.data ("Data" does get copied over to SentrySpan when created from a SpanTracer);

Steps to Reproduce

SentrySdk.Init(options =>
{
    options.Dsn = "..";
    options.TracesSampleRate = 1.0;

    options.SetBeforeSendTransaction(transaction =>
    {
        transaction.SetData("setbeforesendtransaction", "transaction-setdata");
        transaction.Contexts.Trace.SetData("setbeforesendtransaction", "transaction-contexts-trace-setdata");
        return transaction;
    });
});

var transaction = SentrySdk.StartTransaction("my-transaction", "start-transaction");
SentrySdk.ConfigureScope(scope => scope.Transaction = transaction);
transaction.SetData("transaction-data-key", "transaction-data-value");
transaction.SetData("transaction-array", new[] {42, 43, 44});
// Do some work.
transaction.Finish();

Expected Result

Image
{
  "contexts": {
    "trace": {
      "data": {
        "setbeforesendtransaction": "transaction-contexts-trace-setdata",
        "transaction-array": [42, 43, 44],
        "transaction-data-key": "transaction-data-value"
      }
    }
  }
}

Actual Result

Image
{
  "contexts": {
    "trace": {
      "data": {
        "setbeforesendtransaction": "transaction-contexts-trace-setdata"
      }
    }
  }
}

Additional Notes

Metadata

Metadata

Assignees

Labels

.NETPull requests that update .net codeBugSomething isn't workingTraces

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions