Skip to content

Commit 5426885

Browse files
authored
Save new request body when retrying the request to save progress (#1732)
Fixes OPS-3194.
1 parent 0159b02 commit 5426885

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

packages/engine/src/lib/services/progress.service.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,15 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise<void> => {
107107
} as BodyAccessKeyRequest,
108108
{
109109
retries: MAX_RETRIES,
110-
retryCondition: (error: AxiosError) => {
110+
retryCondition: async (error: AxiosError) => {
111111
throwIfExecutionTimeExceeded();
112-
return isRetryableError(error);
112+
113+
if (!isRetryableError(error)) {
114+
return false;
115+
}
116+
117+
await updateRequestBody(request, error);
118+
return true;
113119
},
114120
retryDelay: (retryCount: number) => (retryCount + 1) * 200, // 200ms, 400ms, 600ms
115121
},
@@ -129,6 +135,22 @@ const sendUpdateRunRequest = async (flowRunId: FlowRunId): Promise<void> => {
129135
logger.debug(`Progress update request for ${flowRunId} took ${duration}ms`);
130136
};
131137

138+
async function updateRequestBody(
139+
request: UpdateRunProgressRequest,
140+
error: AxiosError,
141+
): Promise<void> {
142+
try {
143+
if (error.config) {
144+
const newBodyAccessKey = await saveRequestBody(request);
145+
error.config.data = JSON.stringify({
146+
bodyAccessKey: newBodyAccessKey,
147+
});
148+
}
149+
} catch (e) {
150+
logger.info('Failed to update progress request body.', e);
151+
}
152+
}
153+
132154
type UpdateStepProgressParams = {
133155
engineConstants: EngineConstants;
134156
flowExecutorContext: FlowExecutorContext;

0 commit comments

Comments
 (0)