mirror of
https://dev.azure.com/tstanciu94/PhantomMind/_git/Bitip
synced 2025-10-13 01:52:19 +03:00
refactor: improve graceful shutdown logic and logging
This commit is contained in:
parent
310613851b
commit
5059780048
@ -125,7 +125,6 @@ const server = app.listen(config.port, () => {
|
|||||||
let isShuttingDown = false;
|
let isShuttingDown = false;
|
||||||
|
|
||||||
const gracefulShutdown = async (signal: string): Promise<void> => {
|
const gracefulShutdown = async (signal: string): Promise<void> => {
|
||||||
// Prevent multiple shutdown calls
|
|
||||||
if (isShuttingDown) {
|
if (isShuttingDown) {
|
||||||
logger.warn(`Shutdown already in progress, ignoring ${signal}`);
|
logger.warn(`Shutdown already in progress, ignoring ${signal}`);
|
||||||
return;
|
return;
|
||||||
@ -134,7 +133,7 @@ const gracefulShutdown = async (signal: string): Promise<void> => {
|
|||||||
|
|
||||||
logger.info(`Received ${signal}, shutting down gracefully`);
|
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(() => {
|
const forceExitTimeout = setTimeout(() => {
|
||||||
logger.error('Forced shutdown after timeout');
|
logger.error('Forced shutdown after timeout');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
@ -145,7 +144,6 @@ const gracefulShutdown = async (signal: string): Promise<void> => {
|
|||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
server.close(err => {
|
server.close(err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
logger.error('Error closing server', err);
|
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
logger.info('Server closed successfully');
|
logger.info('Server closed successfully');
|
||||||
@ -154,11 +152,10 @@ const gracefulShutdown = async (signal: string): Promise<void> => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Flush logs
|
// Flush logs before exit
|
||||||
await logger.flush();
|
await logger.flush();
|
||||||
logger.info('Logs flushed successfully');
|
logger.info('Shutdown complete');
|
||||||
|
|
||||||
// Clean exit
|
|
||||||
clearTimeout(forceExitTimeout);
|
clearTimeout(forceExitTimeout);
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user