File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ interface Log {
11
11
12
12
/** JSDoc */
13
13
export class Span extends opentracing . Span implements SpanInterface {
14
+ private flushed : boolean = false ;
14
15
private finishTime : number = 0 ;
15
16
16
17
private readonly logs : Log [ ] = [ ] ;
@@ -105,6 +106,28 @@ export class Span extends opentracing.Span implements SpanInterface {
105
106
return this . finishTime - this . startTime ;
106
107
}
107
108
109
+ /**
110
+ * Returns wether the span has been finished.
111
+ */
112
+ public isFinished ( ) : boolean {
113
+ return this . finishTime > 0 ;
114
+ }
115
+
116
+ /**
117
+ * Marks the span as flushed.
118
+ */
119
+ public flush ( ) : this {
120
+ this . flushed = true ;
121
+ return this ;
122
+ }
123
+
124
+ /**
125
+ * Returns wether the span has already be flushed.
126
+ */
127
+ public isFlushed ( ) : boolean {
128
+ return this . flushed ;
129
+ }
130
+
108
131
/**
109
132
* @inheritdoc
110
133
*/
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ import { SpanContext } from './spancontext';
8
8
*/
9
9
export class Tracer extends opentracing . Tracer {
10
10
private traceId ?: string = undefined ;
11
- private spans : Span [ ] = [ ] ;
11
+ private readonly spans : Span [ ] = [ ] ;
12
12
13
13
/**
14
14
* Called by public method startSpan
@@ -41,7 +41,9 @@ export class Tracer extends opentracing.Tracer {
41
41
* Flushes all spans and sends an event
42
42
*/
43
43
public flush ( ) : void {
44
- getCurrentHub ( ) . captureEvent ( { spans : [ ...this . spans ] } ) ;
45
- this . spans = [ ] ;
44
+ const finishedSpans = this . spans . filter ( ( span : Span ) => span . isFinished ( ) && ! span . isFlushed ( ) ) ;
45
+ if ( finishedSpans . length ) {
46
+ getCurrentHub ( ) . captureEvent ( { spans : finishedSpans . map ( ( span : Span ) => span . flush ( ) ) } ) ;
47
+ }
46
48
}
47
49
}
You can’t perform that action at this time.
0 commit comments