From d2a87feae5af63dfe216b6659c21b6d6959f8617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Gon=C3=A7alves?= Date: Thu, 4 Dec 2025 09:58:37 +0000 Subject: [PATCH 1/3] Save new request body when retrying request --- packages/engine/src/lib/services/progress.service.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/engine/src/lib/services/progress.service.ts b/packages/engine/src/lib/services/progress.service.ts index 99fc412fd1..bafa2a85f2 100644 --- a/packages/engine/src/lib/services/progress.service.ts +++ b/packages/engine/src/lib/services/progress.service.ts @@ -92,7 +92,7 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { ); try { - const bodyAccessKey = await saveRequestBody(request); + let bodyAccessKey = await saveRequestBody(request); throwIfExecutionTimeExceeded(); await makeHttpRequest( @@ -107,9 +107,15 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { } as BodyAccessKeyRequest, { retries: MAX_RETRIES, - retryCondition: (error: AxiosError) => { + retryCondition: async (error: AxiosError) => { throwIfExecutionTimeExceeded(); - return isRetryableError(error); + + if (isRetryableError(error)) { + bodyAccessKey = await saveRequestBody(request); + return true; + } + + return false; }, retryDelay: (retryCount: number) => (retryCount + 1) * 200, // 200ms, 400ms, 600ms }, From 7d54f9ead8f48f15f62a946cfb015e524f763045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Gon=C3=A7alves?= Date: Thu, 4 Dec 2025 14:53:13 +0000 Subject: [PATCH 2/3] Save new body on each retry --- .../engine/src/lib/services/progress.service.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/engine/src/lib/services/progress.service.ts b/packages/engine/src/lib/services/progress.service.ts index bafa2a85f2..5ca981a761 100644 --- a/packages/engine/src/lib/services/progress.service.ts +++ b/packages/engine/src/lib/services/progress.service.ts @@ -92,7 +92,7 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { ); try { - let bodyAccessKey = await saveRequestBody(request); + const bodyAccessKey = await saveRequestBody(request); throwIfExecutionTimeExceeded(); await makeHttpRequest( @@ -110,12 +110,18 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { retryCondition: async (error: AxiosError) => { throwIfExecutionTimeExceeded(); - if (isRetryableError(error)) { - bodyAccessKey = await saveRequestBody(request); - return true; + if (!isRetryableError(error)) { + return false; } - return false; + if (error.config) { + const newBodyAccessKey = await saveRequestBody(request); + error.config.data = JSON.stringify({ + bodyAccessKey: newBodyAccessKey, + }); + } + + return true; }, retryDelay: (retryCount: number) => (retryCount + 1) * 200, // 200ms, 400ms, 600ms }, From 5564c507129d990c9d8dd4d56fee58e15039f0c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Gon=C3=A7alves?= Date: Thu, 4 Dec 2025 15:21:24 +0000 Subject: [PATCH 3/3] Add try catch --- .../src/lib/services/progress.service.ts | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/engine/src/lib/services/progress.service.ts b/packages/engine/src/lib/services/progress.service.ts index 5ca981a761..332b33ba98 100644 --- a/packages/engine/src/lib/services/progress.service.ts +++ b/packages/engine/src/lib/services/progress.service.ts @@ -114,13 +114,7 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { return false; } - if (error.config) { - const newBodyAccessKey = await saveRequestBody(request); - error.config.data = JSON.stringify({ - bodyAccessKey: newBodyAccessKey, - }); - } - + await updateRequestBody(request, error); return true; }, retryDelay: (retryCount: number) => (retryCount + 1) * 200, // 200ms, 400ms, 600ms @@ -141,6 +135,22 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise => { logger.debug(`Progress update request for ${flowRunId} took ${duration}ms`); }; +async function updateRequestBody( + request: UpdateRunProgressRequest, + error: AxiosError, +): Promise { + try { + if (error.config) { + const newBodyAccessKey = await saveRequestBody(request); + error.config.data = JSON.stringify({ + bodyAccessKey: newBodyAccessKey, + }); + } + } catch (e) { + logger.info('Failed to update progress request body.', e); + } +} + type UpdateStepProgressParams = { engineConstants: EngineConstants; flowExecutorContext: FlowExecutorContext;