Handle SIGINT and SIGTERM to exit gracefully

This commit is contained in:
Zaid Abdulla committed 2016-12-04 19:07:03 -08:00
1 parent 9f85ead558
commit 34de9c7e7d
2 files changed
+34 -14

No files matched your search

+19 -11
View File
@@ -20,6 +20,8 @@ util = require 'util'
cluster = require 'cluster'
config = require './config'
db = require './db'
extensions = require './extensions'
service = config.argv[0]
if not service?
@@ -34,23 +36,25 @@ onConnection = require("./#{service}").onConnection
server = null
exit = () ->
setTimeout(() ->
process.exit(1)
, 30000).unref()
cluster.worker?.disconnect()
server.close(() ->
db.disconnect()
extensions.killAll()
)
listener = (httpRequest, httpResponse) ->
d = domain.create()
d.on('error', (err) ->
util.error("#{new Date().toISOString()} - #{err.stack}\n")
try
killTimer = setTimeout(() ->
process.exit(1)
, 30000)
killTimer.unref()
cluster.worker?.disconnect()
server.close(() ->
db.disconnect()
)
exit()
httpResponse.writeHead(500, {'Connection' : 'close'})
httpResponse.end("#{err.name}: #{err.message}")
catch err2
@@ -85,3 +89,7 @@ db.connect((err) ->
throw err if err
server.listen(port, networkInterface)
)
process.on('SIGINT', exit)
process.on('SIGTERM', exit)