diff --git a/lib/roles/notify/hipchat.js b/lib/roles/notify/hipchat.js index 7a13c43e..c82c323a 100644 --- a/lib/roles/notify/hipchat.js +++ b/lib/roles/notify/hipchat.js @@ -8,6 +8,7 @@ var logger = require('../../util/logger') var wire = require('../../wire') var wirerouter = require('../../wire/router') var wireutil = require('../../wire/util') +var lifecycle = require('../../util/lifecycle') module.exports = function(options) { var log = logger.createLogger('notify-hipchat') @@ -61,18 +62,10 @@ module.exports = function(options) { }) } - function gracefullyExit() { - process.exit(0) - } - - process.on('SIGINT', function() { - gracefullyExit() - }) - - process.on('SIGTERM', function() { - gracefullyExit() - }) - log.info('Listening for %s (or higher) level log messages', logger.LevelLabel[options.priority]) + + lifecycle.observe(function() { + sub.close() + }) } diff --git a/lib/roles/processor.js b/lib/roles/processor.js index 0d768944..eaabb607 100644 --- a/lib/roles/processor.js +++ b/lib/roles/processor.js @@ -5,6 +5,7 @@ var wire = require('../wire') var wirerouter = require('../wire/router') var wireutil = require('../wire/util') var dbapi = require('../db/api') +var lifecycle = require('../util/lifecycle') module.exports = function(options) { var log = logger.createLogger('processor') @@ -91,4 +92,9 @@ module.exports = function(options) { appDealer.send([channel, data]) }) .handler()) + + lifecycle.observe(function() { + appDealer.close() + devDealer.close() + }) } diff --git a/lib/roles/reaper.js b/lib/roles/reaper.js index 49d98905..204ff30a 100644 --- a/lib/roles/reaper.js +++ b/lib/roles/reaper.js @@ -46,4 +46,9 @@ module.exports = function(options) { timer = setInterval(reap, options.reapInterval) log.info('Reaping devices with no heartbeat') + + lifecycle.observe(function() { + clearTimeout(timer) + push.close() + }) } diff --git a/lib/roles/triproxy.js b/lib/roles/triproxy.js index df8fe196..367aedeb 100644 --- a/lib/roles/triproxy.js +++ b/lib/roles/triproxy.js @@ -1,6 +1,7 @@ var zmq = require('zmq') var logger = require('../util/logger') +var lifecycle = require('../util/lifecycle') module.exports = function(options) { var log = logger.createLogger('triproxy') @@ -31,4 +32,10 @@ module.exports = function(options) { pull.bindSync(options.endpoints.pull) pull.on('message', proxy(dealer)) log.info('PULL socket bound on', options.endpoints.pull) + + lifecycle.observe(function() { + pub.close() + dealer.close() + pull.close() + }) }