@@ -79,6 +79,51 @@ describe('Plugin', () => {
7979 } ) ,
8080 ] )
8181 } )
82+
83+ it ( 'does not leak DynamoDB peer.service to subsequent unrelated HTTP spans' , async ( ) => {
84+ const http = require ( 'http' )
85+
86+ const server = http . createServer ( ( req , res ) => res . end ( 'ok' ) )
87+ await new Promise ( ( resolve ) => server . listen ( 0 , '127.0.0.1' , resolve ) )
88+ const port = server . address ( ) . port
89+
90+ try {
91+ const send = toPromise ( dynamo , dynamo . putItem )
92+ const allSpans = [ ]
93+ const peerService = 'dynamodb.us-east-1.amazonaws.com'
94+
95+ const tracesPromise = agent . assertSomeTraces ( traces => {
96+ allSpans . push ( ...traces . flat ( ) )
97+ assert . ok ( allSpans . find ( s => s . name === 'aws.request' ) , 'expected aws.request span' )
98+ assert . ok (
99+ allSpans . find ( s => s . name === 'http.request' && s . meta [ 'http.url' ] ?. includes ( '/unrelated' ) ) ,
100+ 'expected unrelated http.request span'
101+ )
102+ } , { timeoutMs : 15000 } )
103+
104+ await send ( { TableName : tableName , Item : { id : { S : 'leak-test' } } } )
105+
106+ await new Promise ( ( resolve , reject ) => {
107+ http . get ( `http://127.0.0.1:${ port } /unrelated` , ( res ) => {
108+ res . on ( 'data' , ( ) => { } )
109+ res . on ( 'end' , resolve )
110+ } ) . on ( 'error' , reject )
111+ } )
112+
113+ await tracesPromise
114+
115+ const unrelatedHttpSpan = allSpans . find (
116+ s => s . name === 'http.request' && s . meta [ 'http.url' ] ?. includes ( '/unrelated' )
117+ )
118+ assert . notStrictEqual (
119+ unrelatedHttpSpan . meta [ 'peer.service' ] ,
120+ peerService ,
121+ 'unrelated HTTP span should not inherit DynamoDB peer.service'
122+ )
123+ } finally {
124+ server . close ( )
125+ }
126+ } )
82127 } )
83128
84129 describe ( 'Kinesis-Serverless' , ( ) => {
0 commit comments