Skip to content

Commit f9640fc

Browse files
committed
feat: introduce ended property on Span
Add a getter to Span and ReadableSpan to allow checking if the span is ended without using a private field or rely on internals like span.duration[0] < 0. Refs: open-telemetry/opentelemetry-java#693 Refs: open-telemetry/opentelemetry-java#697
1 parent 9458390 commit f9640fc

File tree

7 files changed

+20
-0
lines changed

7 files changed

+20
-0
lines changed

packages/opentelemetry-exporter-collector/test/helper.ts

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const mockedReadableSpan: ReadableSpan = {
3232
parentSpanId: '78a8915098864388',
3333
startTime: [1574120165, 429803070],
3434
endTime: [1574120165, 438688070],
35+
ended: true,
3536
status: { code: 0 },
3637
attributes: { component: 'document-load' },
3738
links: [

packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ describe('JaegerExporter', () => {
117117
spanContext,
118118
startTime: [1566156729, 709],
119119
endTime: [1566156731, 709],
120+
ended: true,
120121
status: {
121122
code: types.CanonicalCode.DATA_LOSS,
122123
},

packages/opentelemetry-exporter-jaeger/test/transform.test.ts

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ describe('transform', () => {
3535
spanContext,
3636
startTime: [1566156729, 709],
3737
endTime: [1566156731, 709],
38+
ended: true,
3839
status: {
3940
code: types.CanonicalCode.OK,
4041
},
@@ -131,6 +132,7 @@ describe('transform', () => {
131132
spanContext,
132133
startTime: [1566156729, 709],
133134
endTime: [1566156731, 709],
135+
ended: true,
134136
status: {
135137
code: types.CanonicalCode.DATA_LOSS,
136138
message: 'data loss',
@@ -187,6 +189,7 @@ describe('transform', () => {
187189
spanContext,
188190
startTime: [1566156729, 709],
189191
endTime: [1566156731, 709],
192+
ended: true,
190193
status: {
191194
code: types.CanonicalCode.OK,
192195
},

packages/opentelemetry-exporter-zipkin/test/zipkin.test.ts

+3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ function getReadableSpan() {
3838
},
3939
startTime: [startTime, 0],
4040
endTime: [startTime + duration, 0],
41+
ended: true,
4142
duration: [duration, 0],
4243
status: {
4344
code: types.CanonicalCode.OK,
@@ -141,6 +142,7 @@ describe('ZipkinExporter', () => {
141142
},
142143
startTime: [startTime, 0],
143144
endTime: [startTime + duration, 0],
145+
ended: true,
144146
duration: [duration, 0],
145147
status: {
146148
code: types.CanonicalCode.OK,
@@ -167,6 +169,7 @@ describe('ZipkinExporter', () => {
167169
},
168170
startTime: [startTime, 0],
169171
endTime: [startTime + duration, 0],
172+
ended: true,
170173
duration: [duration, 0],
171174
status: {
172175
code: types.CanonicalCode.OK,

packages/opentelemetry-tracing/src/Span.ts

+4
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ export class Span implements types.Span, ReadableSpan {
180180
return this._duration;
181181
}
182182

183+
get ended(): boolean {
184+
return this._ended;
185+
}
186+
183187
private _isSpanEnded(): boolean {
184188
if (this._ended) {
185189
this._logger.warn(

packages/opentelemetry-tracing/src/export/ReadableSpan.ts

+1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ export interface ReadableSpan {
3636
readonly links: Link[];
3737
readonly events: TimedEvent[];
3838
readonly duration: HrTime;
39+
readonly ended: boolean;
3940
}

packages/opentelemetry-tracing/test/Span.test.ts

+7
Original file line numberDiff line numberDiff line change
@@ -349,4 +349,11 @@ describe('Span', () => {
349349
span.updateName('bar-span');
350350
assert.strictEqual(span.name, 'foo-span');
351351
});
352+
353+
it('should have ended', () => {
354+
const span = new Span(tracer, name, spanContext, SpanKind.SERVER);
355+
assert.strictEqual(span.ended, false);
356+
span.end();
357+
assert.strictEqual(span.ended, true);
358+
})
352359
});

0 commit comments

Comments
 (0)