Skip to content

Commit 9bfadb5

Browse files
fix(spans): Allow zero exclusive time for INP spans (#11408)
Allows exclusive time for spans to be 0, including inp spans.
1 parent 7dae9f6 commit 9bfadb5

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

packages/core/src/tracing/span.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export class Span implements SpanInterface {
167167
if (spanContext.endTimestamp) {
168168
this._endTime = spanContext.endTimestamp;
169169
}
170-
if (spanContext.exclusiveTime) {
170+
if (spanContext.exclusiveTime !== undefined) {
171171
this._exclusiveTime = spanContext.exclusiveTime;
172172
}
173173
this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};

packages/core/test/lib/tracing/span.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@ describe('span', () => {
5656
expect(span.name).toEqual('new name');
5757
expect(span.description).toEqual('new name');
5858
});
59+
60+
it('allows exclusiveTime to be set', () => {
61+
const span = new Span({ name: 'span name', exclusiveTime: 100 });
62+
expect(spanToJSON(span).exclusive_time).toEqual(100);
63+
});
64+
65+
it('allows exclusiveTime to be zero', () => {
66+
const span = new Span({ name: 'span name', exclusiveTime: 0 });
67+
expect(spanToJSON(span).exclusive_time).toEqual(0);
68+
});
69+
70+
it('drops undefined exclusiveTime', () => {
71+
const span = new Span({ name: 'span name', exclusiveTime: undefined });
72+
expect(Object.keys(spanToJSON(span)).includes('exclusive_time')).toBe(false);
73+
});
5974
});
6075
/* eslint-enable deprecation/deprecation */
6176

packages/types/src/span.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export interface SpanJSON {
5757
trace_id: string;
5858
origin?: SpanOrigin;
5959
_metrics_summary?: Record<string, Array<MetricSummary>>;
60+
exclusive_time?: number;
6061
}
6162

6263
// These are aligned with OpenTelemetry trace flags

0 commit comments

Comments
 (0)