diff --git a/backend/src/server.ts b/backend/src/server.ts index f532946..a735570 100644 --- a/backend/src/server.ts +++ b/backend/src/server.ts @@ -27,6 +27,26 @@ import sponsorshipPolicyRoutes from './routes/sponsorship-policy-routes.js'; let server: FastifyInstance; + +async function registerWithRetry(server: FastifyInstance, plugin: any, retries: number, timeout: number) { + for (let attempt = 1; attempt <= retries; attempt++) { + try { + const registerPromise = server.register(plugin); + const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), timeout)); + await Promise.race([registerPromise, timeoutPromise]); + console.log('Plugin registered successfully'); + return; + } catch (error) { + if (attempt === retries) { + console.error('Failed to register plugin after maximum retries:', error); + throw error; + } else { + console.warn(`Attempt ${attempt} failed. Retrying...`); + } + } + } +} + const initializeServer = async (): Promise => { server = fastify({ @@ -69,7 +89,9 @@ const initializeServer = async (): Promise => { await server.register(sponsorshipPolicyRoutes); // Register the sequelizePlugin - await server.register(sequelizePlugin); + //await server.register(sequelizePlugin); + + await registerWithRetry(server, sequelizePlugin, 3, 5000); // 3 retries with a 5-second timeout // Synchronize all models await server.sequelize.sync();