Skip to content

Commit 4c627a4

Browse files
committed
test: retry forced external DB sync until idle
1 parent ba1df26 commit 4c627a4

1 file changed

Lines changed: 27 additions & 18 deletions

File tree

apps/e2e/tests/backend/endpoints/api/v1/external-db-sync-utils.ts

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const FORCE_SYNC_MAX_DURATION_MS = (() => {
2121
return parsed;
2222
})();
2323
const FORCE_SYNC_INTERVAL_MS = 2000;
24+
const FORCE_SYNC_ATTEMPTS = 3;
2425
let 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

Comments
 (0)