@@ -162,33 +162,37 @@ var utils = {
162
162
*/
163
163
populateTraceData : function ( segment , xAmznTraceId ) {
164
164
logger . getLogger ( ) . debug ( 'Lambda trace data found: ' + xAmznTraceId ) ;
165
- var data = utils . processTraceData ( xAmznTraceId ) ;
165
+ let traceData = utils . processTraceData ( xAmznTraceId ) ;
166
166
var valid = false ;
167
167
168
- if ( ! data ) {
169
- data = { } ;
168
+ if ( ! traceData ) {
169
+ traceData = { } ;
170
170
logger . getLogger ( ) . error ( '_X_AMZN_TRACE_ID is empty or has an invalid format' ) ;
171
- } else if ( ! data . root || ! data . parent || ! data . sampled ) {
171
+ } else if ( ! traceData . root || ! traceData . parent || ! traceData . sampled ) {
172
172
logger . getLogger ( ) . error ( '_X_AMZN_TRACE_ID is missing required information' ) ;
173
173
} else {
174
174
valid = true ;
175
175
}
176
176
177
- segment . trace_id = TraceID . FromString ( data . root ) . toString ( ) ; // Will always assign valid trace_id
178
- segment . id = data . parent || crypto . randomBytes ( 8 ) . toString ( 'hex' ) ;
177
+ segment . trace_id = TraceID . FromString ( traceData . root ) . toString ( ) ; // Will always assign valid trace_id
178
+ segment . id = traceData . parent || crypto . randomBytes ( 8 ) . toString ( 'hex' ) ;
179
179
180
- if ( data . root && segment . trace_id !== data . root ) {
180
+ if ( traceData . root && segment . trace_id !== traceData . root ) {
181
181
logger . getLogger ( ) . error ( '_X_AMZN_TRACE_ID contains invalid trace ID' ) ;
182
182
valid = false ;
183
183
}
184
184
185
- if ( ! parseInt ( data . sampled ) ) {
185
+ if ( ! parseInt ( traceData . sampled ) ) {
186
186
segment . notTraced = true ;
187
187
} else {
188
188
delete segment . notTraced ;
189
189
}
190
190
191
- logger . getLogger ( ) . debug ( 'Segment started: ' + JSON . stringify ( data ) ) ;
191
+ if ( traceData . data ) {
192
+ segment . userData = traceData . data ;
193
+ }
194
+
195
+ logger . getLogger ( ) . debug ( 'Segment started: ' + JSON . stringify ( traceData ) ) ;
192
196
return valid ;
193
197
}
194
198
} ,
@@ -202,6 +206,7 @@ var utils = {
202
206
203
207
processTraceData : function processTraceData ( traceData ) {
204
208
var amznTraceData = { } ;
209
+ var data = { } ;
205
210
var reservedKeywords = [ 'root' , 'parent' , 'sampled' , 'self' ] ;
206
211
var remainingBytes = 256 ;
207
212
@@ -217,19 +222,22 @@ var utils = {
217
222
var pair = header . split ( '=' ) ;
218
223
219
224
if ( pair [ 0 ] && pair [ 1 ] ) {
220
- var key = pair [ 0 ] . trim ( ) . toLowerCase ( ) ;
221
- var value = pair [ 1 ] . trim ( ) . toLowerCase ( ) ;
222
- var reserved = reservedKeywords . indexOf ( key ) !== - 1 ;
225
+ let key = pair [ 0 ] . trim ( ) ;
226
+ let value = pair [ 1 ] . trim ( ) ;
227
+ let lowerCaseKey = key . toLowerCase ( ) ;
228
+ let reserved = reservedKeywords . indexOf ( lowerCaseKey ) !== - 1 ;
223
229
224
230
if ( reserved ) {
225
- amznTraceData [ key ] = value ;
226
- } else if ( ! reserved && remainingBytes - ( key . length + value . length ) >= 0 ) {
227
- amznTraceData [ key ] = value ;
231
+ amznTraceData [ lowerCaseKey ] = value ;
232
+ } else if ( ! reserved && remainingBytes - ( lowerCaseKey . length + value . length ) >= 0 ) {
233
+ data [ key ] = value ;
228
234
remainingBytes -= ( key . length + value . length ) ;
229
235
}
230
236
}
231
237
} ) ;
232
238
239
+ amznTraceData [ 'data' ] = data ;
240
+
233
241
return amznTraceData ;
234
242
} ,
235
243
0 commit comments