From 32184330d92c9c92aa199e8b05f16a84cf98d8d1 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 22 Mar 2021 11:15:59 +0000 Subject: [PATCH] delay closing by 1 minute for deployment flip --- services/real-time/app.js | 2 +- services/real-time/app/js/DeploymentManager.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/services/real-time/app.js b/services/real-time/app.js index 832bf52a53..bde00b2e17 100644 --- a/services/real-time/app.js +++ b/services/real-time/app.js @@ -85,7 +85,7 @@ io.configure(function () { // a 200 response on '/' is required for load balancer health checks // these operate separately from kubernetes readiness checks app.get('/', function (req, res) { - if (Settings.serviceIsClosed || Settings.shutDownInProgress) { + if (Settings.shutDownInProgress || DeploymentManager.deploymentIsClosed()) { res.sendStatus(503) // Service unavailable } else { res.send('real-time is open') diff --git a/services/real-time/app/js/DeploymentManager.js b/services/real-time/app/js/DeploymentManager.js index a86db02dd1..a3201e6b21 100644 --- a/services/real-time/app/js/DeploymentManager.js +++ b/services/real-time/app/js/DeploymentManager.js @@ -9,10 +9,13 @@ const FILE_CHECK_INTERVAL = 5000 const statusFile = settings.deploymentFile const deploymentColour = settings.deploymentColour +var serviceCloseTime + function updateDeploymentStatus(fileContent) { const closed = fileContent && fileContent.indexOf(deploymentColour) === -1 if (closed && !settings.serviceIsClosed) { settings.serviceIsClosed = true + serviceCloseTime = Date.now() + 60 * 1000 // delay closing by 1 minute logger.warn({ fileContent }, 'closing service') } else if (!closed && settings.serviceIsClosed) { settings.serviceIsClosed = false @@ -49,5 +52,8 @@ module.exports = { checkStatusFileSync() // perform an initial synchronous check at start up setInterval(pollStatusFile, FILE_CHECK_INTERVAL) // continue checking periodically } + }, + deploymentIsClosed() { + return settings.serviceIsClosed && Date.now() > serviceCloseTime } }