@@ -162,33 +162,37 @@ var utils = {
162162 */
163163 populateTraceData : function ( segment , xAmznTraceId ) {
164164 logger . getLogger ( ) . debug ( 'Lambda trace data found: ' + xAmznTraceId ) ;
165- var data = utils . processTraceData ( xAmznTraceId ) ;
165+ let traceData = utils . processTraceData ( xAmznTraceId ) ;
166166 var valid = false ;
167167
168- if ( ! data ) {
169- data = { } ;
168+ if ( ! traceData ) {
169+ traceData = { } ;
170170 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 ) {
172172 logger . getLogger ( ) . error ( '_X_AMZN_TRACE_ID is missing required information' ) ;
173173 } else {
174174 valid = true ;
175175 }
176176
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' ) ;
179179
180- if ( data . root && segment . trace_id !== data . root ) {
180+ if ( traceData . root && segment . trace_id !== traceData . root ) {
181181 logger . getLogger ( ) . error ( '_X_AMZN_TRACE_ID contains invalid trace ID' ) ;
182182 valid = false ;
183183 }
184184
185- if ( ! parseInt ( data . sampled ) ) {
185+ if ( ! parseInt ( traceData . sampled ) ) {
186186 segment . notTraced = true ;
187187 } else {
188188 delete segment . notTraced ;
189189 }
190190
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 ) ) ;
192196 return valid ;
193197 }
194198 } ,
@@ -202,6 +206,7 @@ var utils = {
202206
203207 processTraceData : function processTraceData ( traceData ) {
204208 var amznTraceData = { } ;
209+ var data = { } ;
205210 var reservedKeywords = [ 'root' , 'parent' , 'sampled' , 'self' ] ;
206211 var remainingBytes = 256 ;
207212
@@ -217,19 +222,22 @@ var utils = {
217222 var pair = header . split ( '=' ) ;
218223
219224 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 ;
223229
224230 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 ;
228234 remainingBytes -= ( key . length + value . length ) ;
229235 }
230236 }
231237 } ) ;
232238
239+ amznTraceData [ 'data' ] = data ;
240+
233241 return amznTraceData ;
234242 } ,
235243
0 commit comments