From ffbdfa912388c705ac288b68f45aa31fc9e75c40 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Wed, 27 Nov 2024 23:19:14 -0500 Subject: Synchronize server startup This prevents an edge case where the server begins processing inbound API / AP requests before any of the chart / management daemons are ready, potentially leading to incorrect chart statistics. --- packages/backend/src/boot/common.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'packages/backend/src/boot') diff --git a/packages/backend/src/boot/common.ts b/packages/backend/src/boot/common.ts index ad59a55688..9ff1efb3c2 100644 --- a/packages/backend/src/boot/common.ts +++ b/packages/backend/src/boot/common.ts @@ -19,17 +19,18 @@ export async function server() { logger: new NestLogger(), }); - const serverService = app.get(ServerService); - await serverService.launch(); - if (process.env.NODE_ENV !== 'test') { - app.get(ChartManagementService).start(); + await app.get(ChartManagementService).start(); } if (!envOption.noDaemons) { - app.get(QueueStatsService).start(); - app.get(ServerStatsService).start(); + await app.get(QueueStatsService).start(); + await app.get(ServerStatsService).start(); } + // Start server last so the other services can register hooks first + const serverService = app.get(ServerService); + await serverService.launch(); + return app; } @@ -38,8 +39,8 @@ export async function jobQueue() { logger: new NestLogger(), }); - jobQueue.get(QueueProcessorService).start(); - jobQueue.get(ChartManagementService).start(); + await jobQueue.get(QueueProcessorService).start(); + await jobQueue.get(ChartManagementService).start(); return jobQueue; } -- cgit v1.2.3-freya