From cb109a27a68acf0ddf5b17a792213f732d719abd Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Wed, 6 Jan 2016 09:43:10 +0000 Subject: [PATCH] allow PackWorker to shut down cleanly --- .../track-changes/app/coffee/PackWorker.coffee | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/services/track-changes/app/coffee/PackWorker.coffee b/services/track-changes/app/coffee/PackWorker.coffee index 45a624faee..7b37969229 100644 --- a/services/track-changes/app/coffee/PackWorker.coffee +++ b/services/track-changes/app/coffee/PackWorker.coffee @@ -18,7 +18,7 @@ DOCUMENT_PACK_DELAY = Number(process.argv[3]) || 1000 TIMEOUT = Number(process.argv[4]) || 30*60*1000 shutDownRequested = false -setTimeout () -> +shutDownTimer = setTimeout () -> logger.log "pack timed out, requesting shutdown" # start the shutdown on the next pack shutDownRequested = true @@ -40,10 +40,22 @@ db.close = (callback) -> callback() finish = () -> + if shutDownTimer? + logger.log 'cancelling timeout' + clearTimeout shutDownTimer logger.log 'closing db' db.close () -> - logger.log 'exiting from pack worker' - process.exit() + logger.log 'closing LockManager Redis Connection' + LockManager.close () -> + logger.log 'ready to exit from pack worker' + hardTimeout = setTimeout () -> + logger.error 'hard exit from pack worker' + process.exit(1) + , 5*1000 + hardTimeout.unref() + +process.on 'exit', (code) -> + logger.log {code}, 'pack worker exited' processUpdates = (pending) -> async.eachSeries pending, (doc_id, callback) ->