From 4ca092f351f6c55feefd89a442f480a3829f6167 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Wed, 17 Feb 2021 17:48:05 +0100 Subject: [PATCH] Prevent shutdown running more than once Exit immediately if shutdown has already been called. This is due to the possibility of it being called multiple times from combinations of signals and fatal errors. --- packages/master/master.js | 7 ++++++- packages/slave/slave.js | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/master/master.js b/packages/master/master.js index 0ff2f37a..4f69a5dc 100755 --- a/packages/master/master.js +++ b/packages/master/master.js @@ -477,11 +477,16 @@ async function saveUsers(databaseDirectory, file) { await fs.outputFile(filePath, JSON.stringify(serialized, null, 4)); } +let shuttingDown = false; /** * Innitiate shutdown of master server */ async function shutdown() { - logger.info("Shutting down"); + if (shuttingDown) { + return; + } + shuttingDown = true; + let exitStartTime = Date.now(); try { logger.info("Saving configs"); diff --git a/packages/slave/slave.js b/packages/slave/slave.js index 5998c29f..3c89dcb7 100755 --- a/packages/slave/slave.js +++ b/packages/slave/slave.js @@ -1384,6 +1384,9 @@ class Slave extends libLink.Link { * Stops all instances and closes the connection */ async shutdown() { + if (this._shuttingDown) { + return; + } this._shuttingDown = true; this.connector.setTimeout(30);