From f175829965f297327c927c82e40367fd6e2f2ea2 Mon Sep 17 00:00:00 2001 From: "Hasan.Ahmed" Date: Thu, 30 Jul 2026 16:11:29 +0000 Subject: [PATCH 1/2] FCT2-20905: cap adaptive polling interval at configurable maximum --- ui-spa/src/common/utils/pollTransferStatus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-spa/src/common/utils/pollTransferStatus.ts b/ui-spa/src/common/utils/pollTransferStatus.ts index ebcc877fc..b9223f5e2 100644 --- a/ui-spa/src/common/utils/pollTransferStatus.ts +++ b/ui-spa/src/common/utils/pollTransferStatus.ts @@ -14,7 +14,7 @@ const MID_INTERVAL_MS = 3000; * instead of polling forever (e.g. an orchestration that failed before the * entity was created, or a stale/incorrect transfer ID). */ -const NOT_FOUND_GRACE_MS = 30000; +const NOT_FOUND_GRACE_MS = 90000; // 90s /** * Polls the transfer status endpoint with adaptive backoff until a terminal state is reached From 09c37267e8069fda8672d7beac10db1d62f3c736 Mon Sep 17 00:00:00 2001 From: "Hasan.Ahmed" Date: Thu, 30 Jul 2026 16:37:11 +0000 Subject: [PATCH 2/2] FCT2-20905: fix test --- ui-spa/src/common/utils/pollTransferStatus.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui-spa/src/common/utils/pollTransferStatus.test.ts b/ui-spa/src/common/utils/pollTransferStatus.test.ts index 08e18cbae..3d9e5f524 100644 --- a/ui-spa/src/common/utils/pollTransferStatus.test.ts +++ b/ui-spa/src/common/utils/pollTransferStatus.test.ts @@ -254,9 +254,9 @@ describe("pollTransferStatus", async () => { 100, ); - // The grace window is 30s of wall-clock. Just before it elapses the loop is + // The grace window is 90s of wall-clock. Just before it elapses the loop is // still polling and has not surfaced an error. - await vi.advanceTimersByTimeAsync(29900); + await vi.advanceTimersByTimeAsync(89900); expect(handleResponse).to.toHaveBeenCalledTimes(0); expect(handleError).to.toHaveBeenCalledTimes(0); expect(getTransferStatus).to.toHaveBeenCalled(); @@ -270,7 +270,7 @@ describe("pollTransferStatus", async () => { // The loop has given up: no further polling and no further errors. const callsAfterStop = (getTransferStatus as Mock).mock.calls.length; - await vi.advanceTimersByTimeAsync(30000); + await vi.advanceTimersByTimeAsync(90000); expect(getTransferStatus).to.toHaveBeenCalledTimes(callsAfterStop); expect(handleError).to.toHaveBeenCalledTimes(1); });