From 8e8f65f32869dc0f4444b6caa92ba13a3a0fcfac Mon Sep 17 00:00:00 2001 From: Flea Flicker Date: Tue, 14 Apr 2026 16:06:30 +0000 Subject: [PATCH] feat(GRO-631): add graceful shutdown to API server - Capture server instance from serve() call - Add SIGTERM and SIGINT handlers for graceful shutdown - Add 10-second forced exit timeout Co-Authored-By: Paperclip --- apps/api/src/index.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 7f49e20..9e56c42 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -187,9 +187,24 @@ api.route("/search", searchRouter); const port = Number(process.env.PORT ?? 3000); await initAuth(); console.log(`API server listening on port ${port}`); -serve({ fetch: app.fetch, port }); +const server = serve({ fetch: app.fetch, port }); // Start background reminder scheduler (runs every minute to check for upcoming appointments) startReminderScheduler(); +function shutdown() { + console.log("Shutting down gracefully..."); + server.close(() => { + console.log("HTTP server closed"); + process.exit(0); + }); + setTimeout(() => { + console.error("Forced shutdown after timeout"); + process.exit(1); + }, 10_000); +} + +process.on("SIGTERM", shutdown); +process.on("SIGINT", shutdown); + export default app;