浏览代码

put all shutdown logic in beginShutdown, force program to exit after 2 mins

Brian Gough 11 年之前
父节点
当前提交
02101868e1
共有 1 个文件被更改,包括 9 次插入 和 7 次删除
  1. 9 7
      services/filestore/app.coffee

+ 9 - 7
services/filestore/app.coffee

@@ -103,8 +103,6 @@ app.get "/health_check", (req, res)->
 			else
 			else
 				res.send(503)
 				res.send(503)
 
 
-
-
 app.get '*', (req, res)->
 app.get '*', (req, res)->
 	res.send 404
 	res.send 404
 
 
@@ -115,12 +113,16 @@ host = settings.internal.filestore.host or "localhost"
 beginShutdown = () ->
 beginShutdown = () ->
 	if appIsOk
 	if appIsOk
 		appIsOk = false
 		appIsOk = false
-		server.close()
+		# hard-terminate this process if graceful shutdown fails
+		killTimer = setTimeout () ->
+			process.exit 1
+		, 120*1000
+		killTimer.unref?() # prevent timer from keeping process alive
+		server.close () ->
+			logger.log "closed all connections"
+			Metrics.close()
+			process.disconnect?()
 		logger.log "server will stop accepting connections"
 		logger.log "server will stop accepting connections"
 
 
-server.on "close", () ->
-	logger.log "closed all connections"
-	process.exit 1
-
 server.listen port, host, ->
 server.listen port, host, ->
 	logger.log("filestore store listening on #{host}:#{port}")
 	logger.log("filestore store listening on #{host}:#{port}")