Skip to content

Commit 000a8ac

Browse files
authored
chore: create NoopSpan instead reusing NOOP_SPAN (#1899)
1 parent 2395de6 commit 000a8ac

File tree

17 files changed

+41
-49
lines changed

17 files changed

+41
-49
lines changed

packages/opentelemetry-api/src/context/context.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
*/
1616

1717
import { Context, createContextKey } from '@opentelemetry/context-base';
18-
import { Baggage, NoopSpan, Span, SpanContext } from '../';
18+
import { Baggage, Span, SpanContext } from '../';
19+
import { NoopSpan } from '../trace/NoopSpan';
1920

2021
/**
2122
* span key

packages/opentelemetry-api/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ export * from './trace/Event';
2626
export * from './trace/link_context';
2727
export * from './trace/link';
2828
export * from './trace/NoopLogger';
29-
export * from './trace/NoopSpan';
3029
export * from './trace/NoopTracer';
3130
export * from './trace/NoopTracerProvider';
3231
export * from './trace/ProxyTracer';

packages/opentelemetry-api/src/trace/NoopSpan.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,3 @@ export class NoopSpan implements Span {
7373
// By default does nothing
7474
recordException(_exception: Exception, _time?: TimeInput): void {}
7575
}
76-
77-
export const NOOP_SPAN = new NoopSpan();

packages/opentelemetry-api/src/trace/NoopTracer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import { Span, SpanOptions, Tracer, SpanContext } from '..';
1818
import { Context } from '@opentelemetry/context-base';
19-
import { NoopSpan, NOOP_SPAN } from './NoopSpan';
19+
import { NoopSpan } from './NoopSpan';
2020
import { isSpanContextValid } from './spancontext-utils';
2121
import { getSpanContext } from '../context/context';
2222

@@ -28,7 +28,7 @@ export class NoopTracer implements Tracer {
2828
startSpan(name: string, options?: SpanOptions, context?: Context): Span {
2929
const root = Boolean(options?.root);
3030
if (root) {
31-
return NOOP_SPAN;
31+
return new NoopSpan();
3232
}
3333

3434
const parentFromContext = context && getSpanContext(context);
@@ -39,7 +39,7 @@ export class NoopTracer implements Tracer {
3939
) {
4040
return new NoopSpan(parentFromContext);
4141
} else {
42-
return NOOP_SPAN;
42+
return new NoopSpan();
4343
}
4444
}
4545
}

packages/opentelemetry-api/test/api/api.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import * as assert from 'assert';
1818
import api, {
1919
TraceFlags,
20-
NoopSpan,
2120
NoopTracerProvider,
2221
NoopTracer,
2322
SpanOptions,
@@ -33,6 +32,7 @@ import api, {
3332
defaultTextMapSetter,
3433
defaultTextMapGetter,
3534
} from '../../src';
35+
import { NoopSpan } from '../../src/trace/NoopSpan';
3636

3737
describe('API', () => {
3838
it('should expose a tracer provider via getTracerProvider', () => {

packages/opentelemetry-api/test/noop-implementations/noop-span.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import {
1919
SpanStatusCode,
2020
INVALID_SPANID,
2121
INVALID_TRACEID,
22-
NoopSpan,
2322
TraceFlags,
2423
} from '../../src';
24+
import { NoopSpan } from '../../src/trace/NoopSpan';
2525

2626
describe('NoopSpan', () => {
2727
it('do not crash', () => {

packages/opentelemetry-api/test/noop-implementations/noop-tracer.test.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,26 @@
1717
import * as assert from 'assert';
1818
import {
1919
NoopTracer,
20-
NOOP_SPAN,
2120
SpanContext,
2221
SpanKind,
2322
TraceFlags,
2423
context,
2524
setSpanContext,
2625
} from '../../src';
26+
import { NoopSpan } from '../../src/trace/NoopSpan';
2727

2828
describe('NoopTracer', () => {
2929
it('should not crash', () => {
3030
const tracer = new NoopTracer();
3131

32-
assert.deepStrictEqual(tracer.startSpan('span-name'), NOOP_SPAN);
33-
assert.deepStrictEqual(
34-
tracer.startSpan('span-name1', { kind: SpanKind.CLIENT }),
35-
NOOP_SPAN
32+
assert.ok(tracer.startSpan('span-name') instanceof NoopSpan);
33+
assert.ok(
34+
tracer.startSpan('span-name1', { kind: SpanKind.CLIENT }) instanceof
35+
NoopSpan
3636
);
37-
assert.deepStrictEqual(
38-
tracer.startSpan('span-name2', {
39-
kind: SpanKind.CLIENT,
40-
}),
41-
NOOP_SPAN
37+
assert.ok(
38+
tracer.startSpan('span-name2', { kind: SpanKind.CLIENT }) instanceof
39+
NoopSpan
4240
);
4341
});
4442

packages/opentelemetry-api/test/proxy-implementations/proxy-tracer.test.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
import * as assert from 'assert';
1818
import * as sinon from 'sinon';
1919
import {
20-
NoopSpan,
21-
NOOP_SPAN,
2220
ProxyTracerProvider,
2321
SpanKind,
2422
TracerProvider,
@@ -29,6 +27,7 @@ import {
2927
ROOT_CONTEXT,
3028
SpanOptions,
3129
} from '../../src';
30+
import { NoopSpan } from '../../src/trace/NoopSpan';
3231

3332
describe('ProxyTracer', () => {
3433
let provider: ProxyTracerProvider;
@@ -52,16 +51,14 @@ describe('ProxyTracer', () => {
5251
it('startSpan should return Noop Spans', () => {
5352
const tracer = provider.getTracer('test');
5453

55-
assert.deepStrictEqual(tracer.startSpan('span-name'), NOOP_SPAN);
56-
assert.deepStrictEqual(
57-
tracer.startSpan('span-name1', { kind: SpanKind.CLIENT }),
58-
NOOP_SPAN
54+
assert.ok(tracer.startSpan('span-name') instanceof NoopSpan);
55+
assert.ok(
56+
tracer.startSpan('span-name1', { kind: SpanKind.CLIENT }) instanceof
57+
NoopSpan
5958
);
60-
assert.deepStrictEqual(
61-
tracer.startSpan('span-name2', {
62-
kind: SpanKind.CLIENT,
63-
}),
64-
NOOP_SPAN
59+
assert.ok(
60+
tracer.startSpan('span-name2', { kind: SpanKind.CLIENT }) instanceof
61+
NoopSpan
6562
);
6663
});
6764
});

packages/opentelemetry-instrumentation-http/src/http.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
ROOT_CONTEXT,
2626
getSpan,
2727
suppressInstrumentation,
28-
NoopSpan,
28+
NOOP_TRACER,
2929
} from '@opentelemetry/api';
3030
import type * as http from 'http';
3131
import type * as https from 'https';
@@ -587,7 +587,7 @@ export class HttpInstrumentation extends InstrumentationBase<Http> {
587587
if (requireParent === true && currentSpan === undefined) {
588588
// TODO: Refactor this when a solution is found in
589589
// https://github.com/open-telemetry/opentelemetry-specification/issues/530
590-
span = new NoopSpan();
590+
span = NOOP_TRACER.startSpan(name, options);
591591
} else if (requireParent === true && currentSpan?.context().isRemote) {
592592
span = currentSpan;
593593
} else {

packages/opentelemetry-instrumentation-http/test/functionals/http-disable.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('HttpInstrumentation', () => {
5757
});
5858

5959
beforeEach(() => {
60-
NOOP_TRACER.startSpan = sinon.spy();
60+
sinon.spy(NOOP_TRACER, 'startSpan');
6161
});
6262

6363
afterEach(() => {

0 commit comments

Comments
 (0)