@@ -21,6 +21,7 @@ const FORCE_SYNC_MAX_DURATION_MS = (() => {
2121 return parsed ;
2222} ) ( ) ;
2323const FORCE_SYNC_INTERVAL_MS = 2000 ;
24+ const FORCE_SYNC_ATTEMPTS = 3 ;
2425let lastForcedSyncAt = - Infinity ;
2526
2627// Connection settings to prevent connection leaks
@@ -171,24 +172,32 @@ export async function forceExternalDbSync(): Promise<boolean> {
171172
172173 lastForcedSyncAt = performance . now ( ) ;
173174
174- await niceFetch ( new URL ( '/api/latest/internal/external-db-sync/sequencer' , STACK_BACKEND_BASE_URL ) , {
175- query : {
176- maxDurationMs : String ( FORCE_SYNC_MAX_DURATION_MS ) ,
177- stopWhenIdle : "true" ,
178- } ,
179- headers : {
180- Authorization : `Bearer ${ cronSecret } ` ,
181- } ,
182- } ) ;
183- await niceFetch ( new URL ( '/api/latest/internal/external-db-sync/poller' , STACK_BACKEND_BASE_URL ) , {
184- query : {
185- maxDurationMs : String ( FORCE_SYNC_MAX_DURATION_MS ) ,
186- stopWhenIdle : "true" ,
187- } ,
188- headers : {
189- Authorization : `Bearer ${ cronSecret } ` ,
190- } ,
191- } ) ;
175+ for ( let attempt = 0 ; attempt < FORCE_SYNC_ATTEMPTS ; attempt ++ ) {
176+ const sequencerRes = await niceFetch ( new URL ( '/api/latest/internal/external-db-sync/sequencer' , STACK_BACKEND_BASE_URL ) , {
177+ query : {
178+ maxDurationMs : String ( FORCE_SYNC_MAX_DURATION_MS ) ,
179+ stopWhenIdle : "true" ,
180+ } ,
181+ headers : {
182+ Authorization : `Bearer ${ cronSecret } ` ,
183+ } ,
184+ } ) ;
185+ const pollerRes = await niceFetch ( new URL ( '/api/latest/internal/external-db-sync/poller' , STACK_BACKEND_BASE_URL ) , {
186+ query : {
187+ maxDurationMs : String ( FORCE_SYNC_MAX_DURATION_MS ) ,
188+ stopWhenIdle : "true" ,
189+ } ,
190+ headers : {
191+ Authorization : `Bearer ${ cronSecret } ` ,
192+ } ,
193+ } ) ;
194+
195+ const sequencerIterations = ( sequencerRes . body as { iterations ?: number } | undefined ) ?. iterations ?? 0 ;
196+ const requestsProcessed = ( pollerRes . body as { requests_processed ?: number } | undefined ) ?. requests_processed ?? 0 ;
197+ if ( sequencerIterations === 0 && requestsProcessed === 0 ) {
198+ break ;
199+ }
200+ }
192201 return true ;
193202}
194203
0 commit comments