Skip to content

Commit 9e2c0de

Browse files
committed
CLDSRV-750: fix startTime and elapsed_ms
1 parent 98b1872 commit 9e2c0de

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

lib/server.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class S3Server {
129129
req.serverAccessLog = {
130130
enabled: false,
131131
startTime: requestStartTime,
132+
startTimeUnixMS: Date.now(),
132133
};
133134

134135
// eslint-disable-next-line no-param-reassign
@@ -137,10 +138,9 @@ class S3Server {
137138
res.on('finish', () => {
138139
// eslint-disable-next-line no-param-reassign
139140
req.serverAccessLog.endTime = process.hrtime.bigint();
140-
logServerAccess(req, res);
141141
});
142142
}
143-
143+
144144
// disable nagle algorithm
145145
req.socket.setNoDelay();
146146
res.on('close', () => {
@@ -150,6 +150,12 @@ class S3Server {
150150
});
151151

152152
const monitorEndOfRequest = () => {
153+
if(req.serverAccessLog) {
154+
// eslint-disable-next-line no-param-reassign
155+
req.serverAccessLog.onCloseEndTime = process.hrtime.bigint();
156+
logServerAccess(req, res);
157+
}
158+
153159
const responseTimeInNs = Number(process.hrtime.bigint() - requestStartTime);
154160
const labels = {
155161
method: req.method,

lib/utilities/serverAccessLogger.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,11 +282,12 @@ function logServerAccess(req, res) {
282282
bodyLength: parseInt(req.headers['content-length'], 10) || 0,
283283
contentLength: req.parsedContentLength || 0,
284284
// eslint-disable-next-line camelcase
285-
elapsed_ms: params.startTime && params.endTime ? Number(params.endTime - params.startTime) / 1_000_000 : null,
285+
elapsed_ms: params.startTime && params.onCloseEndTime ?
286+
Number(params.onCloseEndTime - params.startTime) / 1_000_000 : null,
286287
httpURL: req.url || null,
287288

288289
// AWS access server logs fields https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html
289-
startTime: params.startTime ? params.startTime.toString() : null, // AWS "Time" field
290+
startTime: params.startTimeUnixMS || null, // AWS "Time" field
290291
requester: getRequester(authInfo),
291292
operation: getOperation(req),
292293
requestURI: getURI(req),

0 commit comments

Comments
 (0)