فهرست منبع

add shutDownInProgress check into sig listening

Henry Oswald 7 سال پیش
والد
کامیت
1fc1b4206e
1فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 9 3
      services/real-time/app.coffee

+ 9 - 3
services/real-time/app.coffee

@@ -103,11 +103,17 @@ forceDrain = ->
 		DrainManager.startDrain(io, 4)
 		DrainManager.startDrain(io, 4)
 	, Settings.forceDrainMsDelay
 	, Settings.forceDrainMsDelay
 
 
+shutDownInProgress = false
 if Settings.forceDrainMsDelay?
 if Settings.forceDrainMsDelay?
 	Settings.forceDrainMsDelay = parseInt(Settings.forceDrainMsDelay, 10)
 	Settings.forceDrainMsDelay = parseInt(Settings.forceDrainMsDelay, 10)
 	logger.log forceDrainMsDelay: Settings.forceDrainMsDelay,"forceDrainMsDelay enabled"
 	logger.log forceDrainMsDelay: Settings.forceDrainMsDelay,"forceDrainMsDelay enabled"
 	for signal in ['SIGINT', 'SIGHUP', 'SIGQUIT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGABRT']
 	for signal in ['SIGINT', 'SIGHUP', 'SIGQUIT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGABRT']
 		process.on signal, ->
 		process.on signal, ->
-			logger.log signal: signal, "received interrupt, cleaning up"
-			shutdownCleanly(signal)
-			forceDrain()
+			if shutDownInProgress
+				logger.log signal: signal, "shutdown already in progress, ignoring signal"
+				return
+			else
+				shutDownInProgress = true
+				logger.log signal: signal, "received interrupt, cleaning up"
+				shutdownCleanly(signal)
+				forceDrain()