From d3afb6983a9e886bb548e786314b4b9a1e41ccb9 Mon Sep 17 00:00:00 2001 From: blakeromano-il Date: Mon, 16 May 2022 12:54:10 -0400 Subject: [PATCH] convert to loop Signed-off-by: blakeromano-il --- .../src/tasks/LocalTaskWorker.ts | 49 ++++++++++--------- .../backend-tasks/src/tasks/TaskWorker.ts | 44 ++++++++++------- 2 files changed, 52 insertions(+), 41 deletions(-) diff --git a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts index 00765d7db0..c7ed759316 100644 --- a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts +++ b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts @@ -40,31 +40,36 @@ export class LocalTaskWorker { this.logger.info( `Task worker starting: ${this.taskId}, ${JSON.stringify(settings)}`, ); - + const success = false; + let attemptNum = 1; (async () => { - try { - if (settings.initialDelayDuration) { - await this.sleep( - Duration.fromISO(settings.initialDelayDuration), - options?.signal, + while (!success) { + try { + if (settings.initialDelayDuration) { + await this.sleep( + Duration.fromISO(settings.initialDelayDuration), + options?.signal, + ); + } + + while (!options?.signal?.aborted) { + const startTime = process.hrtime(); + await this.runOnce(settings, options?.signal); + const timeTaken = process.hrtime(startTime); + await this.waitUntilNext( + settings, + (timeTaken[0] + timeTaken[1] / 1e9) * 1000, + options?.signal, + ); + } + this.logger.info(`Task worker finished: ${this.taskId}`); + break; + } catch (e) { + attemptNum += 1; + this.logger.warn( + `Task worker failed unexpectedly, attempt number ${attemptNum}, ${e}`, ); } - - while (!options?.signal?.aborted) { - const startTime = process.hrtime(); - await this.runOnce(settings, options?.signal); - const timeTaken = process.hrtime(startTime); - await this.waitUntilNext( - settings, - (timeTaken[0] + timeTaken[1] / 1e9) * 1000, - options?.signal, - ); - } - - this.logger.info(`Task worker finished: ${this.taskId}`); - } catch (e) { - this.logger.warn(`Task worker failed unexpectedly, ${e}`); - this.start(settings, options) } })(); } diff --git a/packages/backend-tasks/src/tasks/TaskWorker.ts b/packages/backend-tasks/src/tasks/TaskWorker.ts index c54dc0a857..e74b8b9cdb 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.ts @@ -51,29 +51,35 @@ export class TaskWorker { this.logger.info( `Task worker starting: ${this.taskId}, ${JSON.stringify(settings)}`, ); - + const success = false; + let attemptNum = 1; (async () => { - try { - if (settings.initialDelayDuration) { - await sleep( - Duration.fromISO(settings.initialDelayDuration), - options?.signal, - ); - } - - while (!options?.signal?.aborted) { - const runResult = await this.runOnce(options?.signal); - if (runResult.result === 'abort') { - break; + while (!success) { + try { + if (settings.initialDelayDuration) { + await sleep( + Duration.fromISO(settings.initialDelayDuration), + options?.signal, + ); } - await sleep(this.workCheckFrequency, options?.signal); - } + while (!options?.signal?.aborted) { + const runResult = await this.runOnce(options?.signal); + if (runResult.result === 'abort') { + break; + } - this.logger.info(`Task worker finished: ${this.taskId}`); - } catch (e) { - this.logger.warn(`Task worker failed unexpectedly, ${e}`); - this.start(settings, options) + await sleep(this.workCheckFrequency, options?.signal); + } + + this.logger.info(`Task worker finished: ${this.taskId}`); + break; + } catch (e) { + attemptNum += 1; + this.logger.warn( + `Task worker failed unexpectedly, attempt number ${attemptNum}, ${e}`, + ); + } } })(); }