Quellcode durchsuchen

[misc] register the metrics sweeping interval handle for later cleanup

Jakob Ackermann vor 5 Jahren
Ursprung
Commit
29742d6a87
2 geänderte Dateien mit 10 neuen und 3 gelöschten Zeilen
  1. 1 0
      libraries/metrics/index.js
  2. 9 3
      libraries/metrics/prom_wrapper.js

+ 1 - 0
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') {

+ 9 - 3
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