From 30070f23b84645d2592d287e92c1102b5e51a1bd Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 5 Jan 2015 16:45:32 +0000 Subject: [PATCH 1/2] add a close() method to terminate the module cleanly closes the statsd connection and cancels registered interval timers prevents express from hanging when trying to shutdown --- libraries/metrics/metrics.coffee | 9 +++++++++ libraries/metrics/open_sockets.coffee | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index 341b8e6ce9..59e4ee9899 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -6,10 +6,15 @@ hostname = require('os').hostname() buildKey = (key)-> "#{name}.#{hostname}.#{key}" +destructors = [] + module.exports = initialize: (_name) -> name = _name + registerDestructor: (func) -> + destructors.push func + set : (key, value, sampleRate = 1)-> statsd.set buildKey(key), value, sampleRate @@ -35,3 +40,7 @@ module.exports = http: require "./http" open_sockets: require "./open_sockets" + close: () -> + for func in destructors + func() + statsd.close() diff --git a/libraries/metrics/open_sockets.coffee b/libraries/metrics/open_sockets.coffee index d74a781496..d4a6eb6c8d 100644 --- a/libraries/metrics/open_sockets.coffee +++ b/libraries/metrics/open_sockets.coffee @@ -3,9 +3,12 @@ seconds = 1000 module.exports = OpenSocketsMonitor = monitor: (logger) -> - setInterval () -> + interval = setInterval () -> OpenSocketsMonitor.gaugeOpenSockets() , 5 * seconds + Metrics = require "./metrics" + Metrics.registerDestructor () -> + clearInterval(interval) gaugeOpenSockets: () -> Metrics = require "./metrics" From fa7e068ebbb1803a763e0f989b6f3197b5ab365f Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 5 Jan 2015 16:46:44 +0000 Subject: [PATCH 2/2] update minor version, due to addition of new close() method --- libraries/metrics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index 2429dca26d..7cbdd990e3 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -1,6 +1,6 @@ { "name": "metrics-sharelatex", - "version": "1.0.0", + "version": "1.1.0", "description": "A drop-in metrics and monitoring module for node.js apps", "repository": { "type": "git",