Parcourir la source

[misc] let the orchestrator handle the process restart

Note that there is also the `shutdownCleanly` interval which may notice
 that the shutdown has completed. There is some network IO required to
 signal all clients the server disconnect, so we cannot run process.exit
 immediately.
Jakob Ackermann il y a 6 ans
Parent
commit
ea75b84eef
1 fichiers modifiés avec 12 ajouts et 1 suppressions
  1. 12 1
      services/real-time/app.js

+ 12 - 1
services/real-time/app.js

@@ -98,7 +98,16 @@ function healthCheck(req, res) {
     }
   })
 }
-app.get('/health_check', healthCheck)
+app.get(
+  '/health_check',
+  (req, res, next) => {
+    if (Settings.shutDownComplete) {
+      return res.sendStatus(503)
+    }
+    next()
+  },
+  healthCheck
+)
 
 app.get('/health_check/redis', healthCheck)
 
@@ -167,6 +176,8 @@ function drainAndShutdown(signal) {
               client.disconnect()
             })
           }
+          // Mark the node as unhealthy.
+          Settings.shutDownComplete = true
         }, Settings.gracefulReconnectTimeoutMs)
       })
       shutdownCleanly(signal)