Skip to content

Commit 2974d78

Browse files
committed
fix custom sentry.op parameter not applying to ignoreSpans
1 parent 6bca137 commit 2974d78

File tree

8 files changed

+32
-7
lines changed

8 files changed

+32
-7
lines changed

dev-packages/browser-integration-tests/suites/tracing/ignoreSpans-streamed/child/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ window.Sentry = Sentry;
55
Sentry.init({
66
dsn: 'https://public@dsn.ingest.sentry.io/1337',
77
integrations: [Sentry.spanStreamingIntegration()],
8-
ignoreSpans: [/ignore/],
8+
ignoreSpans: [/ignore/, { op: 'ignored-op' }],
99
parentSpanIsAlwaysRootSpan: false,
1010
tracesSampleRate: 1,
1111
});

dev-packages/browser-integration-tests/suites/tracing/ignoreSpans-streamed/child/subject.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ Sentry.startSpan({ name: 'parent-span' }, () => {
1818
Sentry.startSpan({ name: 'grandchild-2' }, () => {});
1919
});
2020

21+
// both dropped
22+
Sentry.startSpan({ name: 'name-passes-but-op-not-span-1', op: 'ignored-op' }, () => {});
23+
Sentry.startSpan(
24+
// sentry.op attribute has precedence over top op argument
25+
{ name: 'name-passes-but-op-not-span-2', op: 'keep', attributes: { 'sentry.op': 'ignored-op' } },
26+
() => {},
27+
);
28+
2129
// kept
2230
Sentry.startSpan({ name: 'another-keeper' }, () => {});
2331
});

dev-packages/browser-integration-tests/suites/tracing/ignoreSpans-streamed/child/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ sentryTest('ignored child spans are dropped and their children are reparented',
5252
expect(clientReport.discarded_events).toEqual([
5353
{
5454
category: 'span',
55-
quantity: 3, // 3 ignored child spans
55+
quantity: 5, // 5 ignored child spans
5656
reason: 'ignored',
5757
},
5858
]);

dev-packages/node-integration-tests/suites/tracing/ignoreSpans-streamed/children/instrument.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ Sentry.init({
77
tracesSampleRate: 1.0,
88
transport: loggingTransport,
99
traceLifecycle: 'stream',
10-
ignoreSpans: ['middleware - expressInit', 'custom-to-drop'],
10+
ignoreSpans: ['middleware - expressInit', 'custom-to-drop', { op: 'ignored-op' }],
1111
clientReportFlushInterval: 1_000,
1212
});

dev-packages/node-integration-tests/suites/tracing/ignoreSpans-streamed/children/server.mjs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ app.get('/test/express', (_req, res) => {
2222
() => {},
2323
);
2424
},
25+
Sentry.startSpan({ name: 'name-passes-but-op-not-span-1', op: 'ignored-op' }, () => {}),
26+
Sentry.startSpan(
27+
// sentry.op attribute has precedence over top op argument
28+
{ name: 'name-passes-but-op-not-span-2', op: 'keep', attributes: { 'sentry.op': 'ignored-op' } },
29+
() => {},
30+
),
2531
);
2632
res.send({ response: 'response 1' });
2733
});

dev-packages/node-integration-tests/suites/tracing/ignoreSpans-streamed/children/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ describe('filtering child spans with ignoreSpans (streaming)', () => {
1616
discarded_events: [
1717
{
1818
category: 'span',
19-
quantity: 2,
19+
quantity: 4,
2020
reason: 'ignored',
2121
},
2222
],

packages/core/src/tracing/trace.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,10 @@ function _shouldIgnoreStreamedSpan(client: Client | undefined, spanArguments: Se
594594
}
595595

596596
return shouldIgnoreSpan(
597-
{ description: spanArguments.name || '', op: spanArguments.attributes?.[SEMANTIC_ATTRIBUTE_SENTRY_OP] },
597+
{
598+
description: spanArguments.name || '',
599+
op: spanArguments.attributes?.[SEMANTIC_ATTRIBUTE_SENTRY_OP] || spanArguments.op,
600+
},
598601
ignoreSpans,
599602
);
600603
}

packages/opentelemetry/src/sampler.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ export class SentrySampler implements Sampler {
9393
if (parentSampled) {
9494
if (ignoreSpans?.length) {
9595
const { description: inferredChildName, op: childOp } = inferSpanData(spanName, spanAttributes, spanKind);
96-
if (shouldIgnoreSpan({ description: inferredChildName, op: childOp }, ignoreSpans)) {
96+
if (
97+
shouldIgnoreSpan(
98+
{ description: inferredChildName, op: spanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ?? childOp },
99+
ignoreSpans,
100+
)
101+
) {
97102
this._client.recordDroppedEvent('ignored', 'span');
98103
return wrapSamplingDecision({
99104
decision: SamplingDecision.NOT_RECORD,
@@ -137,7 +142,10 @@ export class SentrySampler implements Sampler {
137142
if (
138143
this._isSpanStreaming &&
139144
ignoreSpans?.length &&
140-
shouldIgnoreSpan({ description: inferredSpanName, op }, ignoreSpans)
145+
shouldIgnoreSpan(
146+
{ description: inferredSpanName, op: mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ?? op },
147+
ignoreSpans,
148+
)
141149
) {
142150
this._client.recordDroppedEvent('ignored', 'span');
143151
return wrapSamplingDecision({

0 commit comments

Comments
 (0)