From 5059780048638bcd21d8b09572d30d01e74c8fe8 Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Sat, 4 Oct 2025 18:08:01 +0300 Subject: [PATCH] refactor: improve graceful shutdown logic and logging --- src/backend/index.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/backend/index.ts b/src/backend/index.ts index 763d27e..6a2e593 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -125,7 +125,6 @@ const server = app.listen(config.port, () => { let isShuttingDown = false; const gracefulShutdown = async (signal: string): Promise => { - // Prevent multiple shutdown calls if (isShuttingDown) { logger.warn(`Shutdown already in progress, ignoring ${signal}`); return; @@ -134,7 +133,7 @@ const gracefulShutdown = async (signal: string): Promise => { logger.info(`Received ${signal}, shutting down gracefully`); - // Set a hard timeout for Docker (Docker default stop timeout is 10s) + // Set timeout slightly less than Docker's default (10s) const forceExitTimeout = setTimeout(() => { logger.error('Forced shutdown after timeout'); process.exit(1); @@ -145,7 +144,6 @@ const gracefulShutdown = async (signal: string): Promise => { await new Promise((resolve, reject) => { server.close(err => { if (err) { - logger.error('Error closing server', err); reject(err); } else { logger.info('Server closed successfully'); @@ -154,11 +152,10 @@ const gracefulShutdown = async (signal: string): Promise => { }); }); - // Flush logs + // Flush logs before exit await logger.flush(); - logger.info('Logs flushed successfully'); + logger.info('Shutdown complete'); - // Clean exit clearTimeout(forceExitTimeout); process.exit(0); } catch (error) {