Skip to content

Commit c12218b

Browse files
committed
Return X-Ray trace ID in HTTP header
1 parent 5ace0cb commit c12218b

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

src/routes/upload.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ router.post('/', optionalAuth, uploadMiddleware, validateRequest(postSchema), as
6262
data: {
6363
file,
6464
}
65-
}).end();
65+
});
66+
67+
next();
6668
} catch (err) {
6769
next(err);
6870
}

src/services/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const container = {
6767

6868
get ServiceDiscovery() {
6969
return new ServiceDiscovery();
70-
}
70+
},
7171
};
7272

7373
export default container;

src/services/trace/AWSXRay.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
import XRay from 'aws-xray-sdk';
22
import http from 'http';
33
import https from 'https';
4+
import type { Request, Response, NextFunction } from 'express';
45

56
class AWSXRay implements Services.Trace {
67
constructor (plugins: string) {
78
this.setPlugins(plugins);
89
}
910

1011
public openSegment(defaultName: string) {
11-
return XRay.express.openSegment(defaultName);
12+
const traceMiddleware = (req: Request, res: Response, next: NextFunction) => {
13+
const traceId = this.getTraceId();
14+
15+
res.setHeader('x-request-id', traceId);
16+
17+
next();
18+
};
19+
20+
return [ XRay.express.openSegment(defaultName), traceMiddleware ];
1221
}
1322

1423
public closeSegment() {

src/services/trace/CLSHooked.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ class CLSHooked implements Services.Trace {
99
const namespace = this.getNamespace();
1010

1111
return (req: Request, res: Response, next: NextFunction) => {
12-
const traceId = req.query.traceId ? req.query.traceId as string : uuidv7();
12+
const traceId = req.headers['x-request-id'] as string || req.query.traceId as string || uuidv7();
1313

1414
namespace.run(() => {
1515
namespace.set('traceId', traceId);
16-
res.header('x-request-id', traceId);
16+
res.setHeader('x-request-id', traceId);
1717

1818
next();
1919
});

0 commit comments

Comments
 (0)