From a8504bf733059934711966832408d99522feb1f6 Mon Sep 17 00:00:00 2001 From: HermanL02 Date: Wed, 7 May 2025 04:12:07 -0300 Subject: [PATCH] use a race instead and avoid return statement --- worker/src/utils/task/task.ts | 37 +++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/worker/src/utils/task/task.ts b/worker/src/utils/task/task.ts index 60cd834..28b1916 100644 --- a/worker/src/utils/task/task.ts +++ b/worker/src/utils/task/task.ts @@ -57,14 +57,16 @@ export async function task() { // check if the response is 200 after all retries if (!requiredWorkResponse || requiredWorkResponse.status !== 200) { - return; + // return; + continue; } const requiredWorkResponseData = await requiredWorkResponse.json(); console.log("[TASK] requiredWorkResponseData: ", requiredWorkResponseData); // const uuid = uuidv4(); const alreadyAssigned = await namespaceWrapper.storeGet(JSON.stringify(requiredWorkResponseData.data.id)); if (alreadyAssigned) { - return; + continue; + // return; } else { await namespaceWrapper.storeSet(JSON.stringify(requiredWorkResponseData.data.id), "initialized"); } @@ -90,30 +92,35 @@ export async function task() { while (retryCount < maxRetries) { try { - repoSummaryResponse = await Promise.race([ - orcaClient.podCall(`worker-task`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(jsonBody), - }), - new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), timeout)), - ]); + const podcallPromise = orcaClient.podCall(`worker-task`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(jsonBody), + }); + + const timeoutPromise = new Promise((_, reject) => + setTimeout(() => reject(new Error("Podcall timeout after 100 seconds")), timeout) + ); + + repoSummaryResponse = await Promise.race([podcallPromise, timeoutPromise]); console.log("[TASK] repoSummaryResponse: ", repoSummaryResponse); break; // If successful, break the retry loop - } catch (error) { + } catch (error: any) { + console.log(`[TASK] Podcall attempt ${retryCount + 1} failed:`, error); retryCount++; if (retryCount === maxRetries) { - throw error; // If we've exhausted retries, throw the error + throw new Error(`Podcall failed after ${maxRetries} attempts: ${error.message}`); } - console.log(`[TASK] Attempt ${retryCount} failed, retrying...`); + console.log(`[TASK] Retrying in 10 seconds...`); await new Promise((resolve) => setTimeout(resolve, 10000)); // Wait 10 seconds before retry } } } catch (error) { // await namespaceWrapper.storeSet(`result-${roundNumber}`, status.ISSUE_SUMMARIZATION_FAILED); console.error("[TASK] EXECUTE TASK ERROR:", error); + continue; } } catch (error) { console.error("[TASK] EXECUTE TASK ERROR:", error);