From 7274217d799993813f9b6d726acadd6128a6862d Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Fri, 8 Jan 2021 14:41:50 -0500 Subject: [PATCH 1/3] Decaf cleanup --- libraries/metrics/http.js | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/libraries/metrics/http.js b/libraries/metrics/http.js index 8d0f9caab1..c0c387bfce 100644 --- a/libraries/metrics/http.js +++ b/libraries/metrics/http.js @@ -1,10 +1,3 @@ -/* - * decaffeinate suggestions: - * DS102: Remove unnecessary code created because of implicit returns - * DS103: Rewrite code to no longer use __guard__ - * DS207: Consider shorter variations of null checks - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md - */ const yn = require('yn') const STACKDRIVER_LOGGING = yn(process.env.STACKDRIVER_LOGGING) @@ -15,14 +8,13 @@ module.exports.monitor = logger => const startTime = process.hrtime() const { end } = res res.end = function() { - let info end.apply(this, arguments) const responseTime = process.hrtime(startTime) const responseTimeMs = Math.round( responseTime[0] * 1000 + responseTime[1] / 1000000 ) const requestSize = parseInt(req.headers['content-length'], 10) - if ((req.route != null ? req.route.path : undefined) != null) { + if (req.route && req.route.path != null) { const routePath = req.route.path .toString() .replace(/\//g, '_') @@ -43,13 +35,12 @@ module.exports.monitor = logger => } const remoteIp = req.ip || - __guard__( - req.socket != null ? req.socket.socket : undefined, - x => x.remoteAddress - ) || - (req.socket != null ? req.socket.remoteAddress : undefined) + (req.socket && req.socket.socket && req.socket.socket.remoteAddress) || + (req.socket && req.socket.remoteAddress) const reqUrl = req.originalUrl || req.url const referrer = req.headers.referer || req.headers.referrer + + let info if (STACKDRIVER_LOGGING) { info = { httpRequest: { @@ -85,13 +76,7 @@ module.exports.monitor = logger => 'response-time': responseTimeMs } } - return logger.info(info, '%s %s', req.method, reqUrl) + logger.info(info, '%s %s', req.method, reqUrl) } - return next() + next() } - -function __guard__(value, transform) { - return typeof value !== 'undefined' && value !== null - ? transform(value) - : undefined -} From 8dcbd5aec0d68cad9caa693edcd1db921e962eb7 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Fri, 8 Jan 2021 14:53:29 -0500 Subject: [PATCH 2/3] Add support for the swagger-tools router The swagger-tools router puts the request path in the req.swagger.apiPath property. --- libraries/metrics/http.js | 46 +++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/libraries/metrics/http.js b/libraries/metrics/http.js index c0c387bfce..bca75b30a2 100644 --- a/libraries/metrics/http.js +++ b/libraries/metrics/http.js @@ -14,12 +14,12 @@ module.exports.monitor = logger => responseTime[0] * 1000 + responseTime[1] / 1000000 ) const requestSize = parseInt(req.headers['content-length'], 10) - if (req.route && req.route.path != null) { - const routePath = req.route.path - .toString() - .replace(/\//g, '_') - .replace(/:/g, '') - .slice(1) + const routePath = getRoutePath(req) + const remoteIp = getRemoteIp(req) + const reqUrl = req.originalUrl || req.url + const referrer = req.headers.referer || req.headers.referrer + + if (routePath != null) { Metrics.timing('http_request', responseTimeMs, null, { method: req.method, status_code: res.statusCode, @@ -33,12 +33,6 @@ module.exports.monitor = logger => }) } } - const remoteIp = - req.ip || - (req.socket && req.socket.socket && req.socket.socket.remoteAddress) || - (req.socket && req.socket.remoteAddress) - const reqUrl = req.originalUrl || req.url - const referrer = req.headers.referer || req.headers.referrer let info if (STACKDRIVER_LOGGING) { @@ -80,3 +74,31 @@ module.exports.monitor = logger => } next() } + +function getRoutePath(req) { + if (req.route && req.route.path != null) { + return req.route.path + .toString() + .replace(/\//g, '_') + .replace(/:/g, '') + .slice(1) + } + if (req.swagger && req.swagger.apiPath != null) { + return req.swagger.apiPath + } + return null +} + +function getRemoteIp(req) { + if (req.ip) { + return req.ip + } + if (req.socket) { + if (req.socket.socket && req.socket.socket.remoteAddress) { + return req.socket.socket.remoteAddress + } else if (req.socket.remoteAddress) { + return req.socket.remoteAddress + } + } + return null +} From 3581d0ce87778bb0f638f1ff92b565ba4b87b400 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Mon, 11 Jan 2021 08:03:49 -0500 Subject: [PATCH 3/3] 3.5.0 --- libraries/metrics/package-lock.json | 2 +- libraries/metrics/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/metrics/package-lock.json b/libraries/metrics/package-lock.json index b6406b3a61..bd63f72688 100644 --- a/libraries/metrics/package-lock.json +++ b/libraries/metrics/package-lock.json @@ -1,6 +1,6 @@ { "name": "@overleaf/metrics", - "version": "3.4.1", + "version": "3.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index 7ef934f9fe..134bccfaba 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -1,6 +1,6 @@ { "name": "@overleaf/metrics", - "version": "3.4.1", + "version": "3.5.0", "description": "A drop-in metrics and monitoring module for node.js apps", "repository": { "type": "git",