diff --git a/packages/async/src/services/asyncjobservice.spec.ts b/packages/async/src/services/asyncjobservice.spec.ts index 915f3bcc9..64029b3de 100644 --- a/packages/async/src/services/asyncjobservice.spec.ts +++ b/packages/async/src/services/asyncjobservice.spec.ts @@ -442,7 +442,7 @@ class AsyncJobServiceTest extends WebdaTest { await action.refresh(); assert.strictEqual(action.status, "ERROR"); - assert.strictEqual(action.errorMessage, "WebdaAsyncAction must have method and serviceName defined at least"); + assert.strictEqual(action.errorMessage, "Invalid AsyncAction"); // Run without serviceName await action.patch({ @@ -457,7 +457,7 @@ class AsyncJobServiceTest extends WebdaTest { await service.runAsyncOperationAction(); await action.refresh(); assert.strictEqual(action.status, "ERROR"); - assert.strictEqual(action.errorMessage, "WebdaAsyncAction must have method and serviceName defined at least"); + assert.strictEqual(action.errorMessage, "Invalid AsyncAction"); // Run with unknown service await action.patch({ diff --git a/packages/async/src/services/asyncjobservice.ts b/packages/async/src/services/asyncjobservice.ts index 9e242dbc7..fc3b79a3a 100644 --- a/packages/async/src/services/asyncjobservice.ts +++ b/packages/async/src/services/asyncjobservice.ts @@ -241,7 +241,9 @@ export default class AsyncJobService { + async postHook(jobInfo: JobInfo, message: any): Promise { // Http allow to break paradigm between the executor and the orchestrator if (jobInfo.JOB_HOOK.startsWith("http")) { return ( @@ -549,7 +569,7 @@ export default class AsyncJobService>(await this.model.ref(jobInfo.JOB_ID).get()).update(message); + return >(await this.model.ref(jobInfo.JOB_ID).get()).update(message); } } @@ -606,36 +626,57 @@ export default class AsyncJobServiceerr?.message, status: "ERROR" }); + await this.postHook(jobInfo, { + errorMessage: err?.message, + status: "ERROR" + }); return; } // Update status - await this.postHook(jobInfo, { results, status: "SUCCESS" }); + await this.postHook(jobInfo, { + results, + status: "SUCCESS" + }); } /** @@ -679,9 +720,9 @@ export default class AsyncJobService this.launchAction(a)) + (await this.model.query(`status = 'SCHEDULED' AND scheduled < ${time + 1}`)).results.map(a => + this.launchAction(a) + ) ); time += this.parameters.schedulerResolution; // Wait for next scheduler resolution