fix(shutdown): kill server after timeout when hanging on shutdown

When socket.io is not able to close a connection somehow, the code
never reaches the final shutdown state but keeps waiting for all
connections to be closed. This can cause a high CPU load on failing
shutdown. It is very unlikely to happen, except when the server is
shut down exactly at the same time a socket is disconnecting and not
already marked as disconnected. This change adds a fallback timer
which forcefully kills the server after a certain amount of time.

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
Erik Michelson
2025-11-24 14:28:01 +01:00
parent 1028d61bf9
commit 801ef14b7e
2 changed files with 9 additions and 1 deletions

7
app.js
View File

@@ -394,6 +394,13 @@ function handleTermSignals () {
process.exit(0)
}
})
} else {
logger.warn(`Real time server not ready for shutdown, trying again (${currentCleanTry}/${maxCleanTries})...`)
currentCleanTry++
if (currentCleanTry > maxCleanTries) {
logger.error('Could not save note revisions after shutdown! Exiting.')
process.exit(1)
}
}
}, 200)
}

View File

@@ -13,6 +13,7 @@
### Bugfixes
- Ignore the healthcheck endpoint in the "too busy" limiter
- Send the referrer origin for YouTube embeddings due to their requirement
- Force kill the server after a timeout when waiting for the realtime server to close connections on shutdown
## <i class="fa fa-tag"></i> 1.10.3 <i class="fa fa-calendar-o"></i> 2025-04-09