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/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", diff --git a/libraries/metrics/prom_wrapper.js b/libraries/metrics/prom_wrapper.js index 57ddf0e2ac..7ec65547c2 100644 --- a/libraries/metrics/prom_wrapper.js +++ b/libraries/metrics/prom_wrapper.js @@ -138,21 +138,31 @@ class MetricWrapper { } } -if (!PromWrapper.sweepRegistered) { +let sweepingInterval +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') } - PromWrapper.sweepRegistered = true - setInterval(function() { - if (PromWrapper.ttlInMinutes) { - if (process.env.DEBUG_METRICS) { - console.log('Sweeping metrics') - } - return metrics.forEach((metric, key) => { - return metric.sweep() - }) + sweepingInterval = setInterval(function() { + if (process.env.DEBUG_METRICS) { + console.log('Sweeping metrics') } + return metrics.forEach((metric, key) => { + return metric.sweep() + }) }, 60000) + + const Metrics = require('./index') + Metrics.registerDestructor(() => clearInterval(sweepingInterval)) } module.exports = PromWrapper