feat: Add option to exclude certain HTTP statuses from tracing #5034
1 issue
find-bugs: Found 1 issue (1 high)
High
TraceIgnoreStatusCodeTransactionProcessor reads from unpopulated Data dictionary - `src/Sentry/Internal/TraceIgnoreStatusCodeTransactionProcessor.cs:22-24`
The processor reads transaction.Data.TryGetValue(OtelSemanticConventions.AttributeHttpResponseStatusCode, ...) which returns Contexts.Trace.Data. However, when transactions are created from TransactionTracer (the normal flow in ASP.NET Core), the HTTP status code set via SetExtra() is stored in TransactionTracer._data, not in TransactionTracer.Contexts.Trace.Data. The SentryTransaction(ITransactionTracer) constructor copies Contexts but never transfers tracer.Data to Contexts.Trace.Data. The feature will silently fail to filter transactions by status code.
Duration: 4m 50s · Tokens: 7.2M in / 27.8k out · Cost: $7.22 (+extraction: $0.01)
Annotations
Check failure on line 24 in src/Sentry/Internal/TraceIgnoreStatusCodeTransactionProcessor.cs
sentry-warden / warden: find-bugs
TraceIgnoreStatusCodeTransactionProcessor reads from unpopulated Data dictionary
The processor reads `transaction.Data.TryGetValue(OtelSemanticConventions.AttributeHttpResponseStatusCode, ...)` which returns `Contexts.Trace.Data`. However, when transactions are created from `TransactionTracer` (the normal flow in ASP.NET Core), the HTTP status code set via `SetExtra()` is stored in `TransactionTracer._data`, not in `TransactionTracer.Contexts.Trace.Data`. The `SentryTransaction(ITransactionTracer)` constructor copies `Contexts` but never transfers `tracer.Data` to `Contexts.Trace.Data`. The feature will silently fail to filter transactions by status code.