1212var AWSXRay = require ( 'aws-xray-sdk-core' ) ;
1313
1414var mwUtils = AWSXRay . middleware ;
15- var IncomingRequestData = mwUtils . IncomingRequestData ;
16- var Segment = AWSXRay . Segment ;
1715
1816var expressMW = {
1917
@@ -32,40 +30,8 @@ var expressMW = {
3230
3331 mwUtils . setDefaultName ( defaultName ) ;
3432
35- return function open ( req , res , next ) {
36- var amznTraceHeader = mwUtils . processHeaders ( req ) ;
37- var name = mwUtils . resolveName ( req . headers . host ) ;
38- var segment = new Segment ( name , amznTraceHeader . root , amznTraceHeader . parent ) ;
39-
40- mwUtils . resolveSampling ( amznTraceHeader , segment , res ) ;
41- segment . addIncomingRequestData ( new IncomingRequestData ( req ) ) ;
42-
43- AWSXRay . getLogger ( ) . debug ( 'Starting express segment: { url: ' + req . url + ', name: ' + segment . name + ', trace_id: ' +
44- segment . trace_id + ', id: ' + segment . id + ', sampled: ' + ! segment . notTraced + ' }' ) ;
45-
46- var didEnd = false ;
47- var endSegment = function ( ) {
48- // ensure `endSegment` is only called once
49- // in some versions of node.js 10.x and in all versions of node.js 11.x and higher,
50- // the 'finish' and 'close' event are BOTH triggered.
51- // Previously, only one or the other was triggered:
52- // https://github.com/nodejs/node/pull/20611
53- if ( didEnd ) return ;
54- didEnd = true ;
55- if ( this . statusCode === 429 )
56- segment . addThrottleFlag ( ) ;
57- if ( AWSXRay . utils . getCauseTypeFromHttpStatus ( this . statusCode ) )
58- segment [ AWSXRay . utils . getCauseTypeFromHttpStatus ( this . statusCode ) ] = true ;
59-
60- segment . http . close ( this ) ;
61- segment . close ( ) ;
62-
63- AWSXRay . getLogger ( ) . debug ( 'Closed express segment successfully: { url: ' + req . url + ', name: ' + segment . name + ', trace_id: ' +
64- segment . trace_id + ', id: ' + segment . id + ', sampled: ' + ! segment . notTraced + ' }' ) ;
65- } ;
66-
67- res . on ( 'finish' , endSegment ) ;
68- res . on ( 'close' , endSegment ) ;
33+ return function ( req , res , next ) {
34+ var segment = mwUtils . traceRequestResponseCycle ( req , res ) ;
6935
7036 if ( AWSXRay . isAutomaticMode ( ) ) {
7137 var ns = AWSXRay . getNamespace ( ) ;
@@ -97,14 +63,12 @@ var expressMW = {
9763 if ( segment && err ) {
9864 segment . close ( err ) ;
9965
100- AWSXRay . getLogger ( ) . debug ( 'Closed express segment with error: { url: ' + req . url + ', name: ' + segment . name + ', trace_id: ' +
101- segment . trace_id + ', id: ' + segment . id + ', sampled: ' + ! segment . notTraced + ' }' ) ;
66+ mwUtils . middlewareLog ( 'Closed express segment with error' , req . url , segment ) ;
10267
10368 } else if ( segment ) {
10469 segment . close ( ) ;
10570
106- AWSXRay . getLogger ( ) . debug ( 'Closed express segment successfully: { url: ' + req . url + ', name: ' + segment . name + ', trace_id: ' +
107- segment . trace_id + ', id: ' + segment . id + ', sampled: ' + ! segment . notTraced + ' }' ) ;
71+ mwUtils . middlewareLog ( 'Closed express segment successfully' , req . url , segment ) ;
10872 }
10973
11074 if ( next )
0 commit comments