@@ -6,7 +6,7 @@ export interface ColdStartTracerConfig {
6
6
tracerWrapper : TracerWrapper ;
7
7
parentSpan ?: SpanWrapper ;
8
8
lambdaFunctionName ?: string ;
9
- coldStartSpanFinishTime : number ; // Equivalent to the Lambda Span Start Time
9
+ currentSpanStartTime : number ;
10
10
minDuration : number ;
11
11
ignoreLibs : string ;
12
12
}
@@ -15,28 +15,29 @@ export class ColdStartTracer {
15
15
private tracerWrapper : TracerWrapper ;
16
16
private parentSpan ?: SpanWrapper ;
17
17
private lambdaFunctionName ?: string ;
18
- private coldStartSpanFinishTime : number ;
18
+ private currentSpanStartTime : number ;
19
19
private minDuration : number ;
20
20
private ignoreLibs : string [ ] ;
21
21
22
22
constructor ( coldStartTracerConfig : ColdStartTracerConfig ) {
23
23
this . tracerWrapper = coldStartTracerConfig . tracerWrapper ;
24
24
this . parentSpan = coldStartTracerConfig . parentSpan ;
25
25
this . lambdaFunctionName = coldStartTracerConfig . lambdaFunctionName ;
26
- this . coldStartSpanFinishTime = coldStartTracerConfig . coldStartSpanFinishTime ;
26
+ this . currentSpanStartTime = coldStartTracerConfig . currentSpanStartTime ;
27
27
this . minDuration = coldStartTracerConfig . minDuration ;
28
28
this . ignoreLibs = coldStartTracerConfig . ignoreLibs . split ( "," ) ;
29
29
}
30
30
31
31
trace ( rootNodes : RequireNode [ ] ) {
32
32
const coldStartSpanStartTime = rootNodes [ 0 ] ?. startTime ;
33
- const coldStartSpan = this . createColdStartSpan ( coldStartSpanStartTime , this . parentSpan ) ;
33
+ const coldStartSpanEndTime = Math . min ( rootNodes [ rootNodes . length - 1 ] ?. endTime , this . currentSpanStartTime ) ;
34
+ const coldStartSpan = this . createColdStartSpan ( coldStartSpanStartTime , coldStartSpanEndTime , this . parentSpan ) ;
34
35
for ( const coldStartNode of rootNodes ) {
35
36
this . traceTree ( coldStartNode , coldStartSpan ) ;
36
37
}
37
38
}
38
39
39
- private createColdStartSpan ( startTime : number , parentSpan : SpanWrapper | undefined ) : SpanWrapper {
40
+ private createColdStartSpan ( startTime : number , endTime : number , parentSpan : SpanWrapper | undefined ) : SpanWrapper {
40
41
const options : SpanOptions = {
41
42
tags : {
42
43
service : "aws.lambda" ,
@@ -50,7 +51,7 @@ export class ColdStartTracer {
50
51
options . childOf = parentSpan . span ;
51
52
}
52
53
const newSpan = new SpanWrapper ( this . tracerWrapper . startSpan ( "aws.lambda.load" , options ) , { } ) ;
53
- newSpan . finish ( this . coldStartSpanFinishTime ) ;
54
+ newSpan . finish ( endTime ) ;
54
55
return newSpan ;
55
56
}
56
57
0 commit comments