From 29742d6a87829b7736007282e344fd2aee27b4ed Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Sat, 3 Oct 2020 19:40:46 +0200 Subject: [PATCH 1/3] [misc] register the metrics sweeping interval handle for later cleanup --- libraries/metrics/index.js | 1 + libraries/metrics/prom_wrapper.js | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libraries/metrics/index.js b/libraries/metrics/index.js index 03357da193..238cf5ab81 100644 --- a/libraries/metrics/index.js +++ b/libraries/metrics/index.js @@ -30,6 +30,7 @@ function initialize(appName, opts = {}) { appName = appName || DEFAULT_APP_NAME configure({ ...opts, appName }) collectDefaultMetrics({ timeout: 5000, prefix: '' }) + promWrapper.setupSweeping() console.log(`ENABLE_TRACE_AGENT set to ${process.env.ENABLE_TRACE_AGENT}`) if (process.env.ENABLE_TRACE_AGENT === 'true') { diff --git a/libraries/metrics/prom_wrapper.js b/libraries/metrics/prom_wrapper.js index 57ddf0e2ac..9fe3407346 100644 --- a/libraries/metrics/prom_wrapper.js +++ b/libraries/metrics/prom_wrapper.js @@ -138,12 +138,15 @@ class MetricWrapper { } } -if (!PromWrapper.sweepRegistered) { +let sweepingInterval +PromWrapper.setupSweeping = function() { + if (sweepingInterval) { + clearInterval(sweepingInterval) + } if (process.env.DEBUG_METRICS) { console.log('Registering sweep method') } - PromWrapper.sweepRegistered = true - setInterval(function() { + sweepingInterval = setInterval(function() { if (PromWrapper.ttlInMinutes) { if (process.env.DEBUG_METRICS) { console.log('Sweeping metrics') @@ -153,6 +156,9 @@ if (!PromWrapper.sweepRegistered) { }) } }, 60000) + + const Metrics = require('./index') + Metrics.registerDestructor(() => clearInterval(sweepingInterval)) } module.exports = PromWrapper From 20223d865f26a83a1b132ccfbfc7ab84a3d3446d Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Sat, 3 Oct 2020 19:42:24 +0200 Subject: [PATCH 2/3] [misc] do not register a noop sweeping interval --- libraries/metrics/prom_wrapper.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/metrics/prom_wrapper.js b/libraries/metrics/prom_wrapper.js index 9fe3407346..7ec65547c2 100644 --- a/libraries/metrics/prom_wrapper.js +++ b/libraries/metrics/prom_wrapper.js @@ -143,18 +143,22 @@ PromWrapper.setupSweeping = function() { if (sweepingInterval) { clearInterval(sweepingInterval) } + if (!PromWrapper.ttlInMinutes) { + if (process.env.DEBUG_METRICS) { + console.log('Not registering sweep method -- empty ttl') + } + return + } if (process.env.DEBUG_METRICS) { console.log('Registering sweep method') } sweepingInterval = setInterval(function() { - if (PromWrapper.ttlInMinutes) { - if (process.env.DEBUG_METRICS) { - console.log('Sweeping metrics') - } - return metrics.forEach((metric, key) => { - return metric.sweep() - }) + if (process.env.DEBUG_METRICS) { + console.log('Sweeping metrics') } + return metrics.forEach((metric, key) => { + return metric.sweep() + }) }, 60000) const Metrics = require('./index') From e1650616b853d73f6c7381e720ab30d9a1fd02a7 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Sat, 3 Oct 2020 19:42:24 +0200 Subject: [PATCH 3/3] [misc] version bump to 3.5.1 --- 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 bd63f72688..56fc668bdb 100644 --- a/libraries/metrics/package-lock.json +++ b/libraries/metrics/package-lock.json @@ -1,6 +1,6 @@ { "name": "@overleaf/metrics", - "version": "3.5.0", + "version": "3.5.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index 134bccfaba..be8ff08387 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -1,6 +1,6 @@ { "name": "@overleaf/metrics", - "version": "3.5.0", + "version": "3.5.1", "description": "A drop-in metrics and monitoring module for node.js apps", "repository": { "type": "git",