@webda/async 2.1.5 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/models.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { CoreModel } from "@webda/core";
1
+ import { CoreModel, OperationContext } from "@webda/core";
2
+ import { WorkerLogLevel } from "@webda/workout";
2
3
  /**
3
4
  * Represent an item for processing queue
4
5
  */
@@ -26,6 +27,17 @@ export interface Job {
26
27
  * @WebdaModel
27
28
  */
28
29
  export default class AsyncAction extends CoreModel {
30
+ /**
31
+ * Set type
32
+ */
33
+ constructor();
34
+ /**
35
+ * By default AsyncAction are not considered internal
36
+ *
37
+ * Internal: That execute a method or operation of Webda application framework
38
+ * @returns
39
+ */
40
+ isInternal(): boolean;
29
41
  /**
30
42
  * Action uuid
31
43
  */
@@ -33,7 +45,11 @@ export default class AsyncAction extends CoreModel {
33
45
  /**
34
46
  * Current status
35
47
  */
36
- status: "RUNNING" | "SUCCESS" | "ERROR" | "QUEUED" | "STARTING" | "TIMEOUT";
48
+ status: "RUNNING" | "SUCCESS" | "ERROR" | "QUEUED" | "STARTING" | "TIMEOUT" | "SCHEDULED";
49
+ /**
50
+ * Timestamp when the action was scheduled
51
+ */
52
+ scheduled?: number;
37
53
  /**
38
54
  * If an error occured it should contain the message
39
55
  */
@@ -79,15 +95,40 @@ export default class AsyncAction extends CoreModel {
79
95
  }
80
96
  /**
81
97
  * Define a Webda Async Action
98
+ *
99
+ * @WebdaModel
82
100
  */
83
- export declare class WebdaAsyncAction extends AsyncAction {
101
+ export declare class AsyncWebdaAction extends AsyncAction {
102
+ serviceName?: string;
103
+ method?: string;
104
+ logLevel: WorkerLogLevel;
84
105
  /**
85
- * Service to call
106
+ *
107
+ * @param serviceName service to call
108
+ * @param method method to call
109
+ * @param arguments to call with the method
110
+ */
111
+ constructor(serviceName?: string, method?: string, ...args: any[]);
112
+ /**
113
+ * Execute a serviceName.method(...args) so this is internal
114
+ * @returns
86
115
  */
87
- serviceName: string;
116
+ isInternal(): boolean;
117
+ }
118
+ /**
119
+ * Operation called asynchronously
120
+ *
121
+ * @WebdaModel
122
+ */
123
+ export declare class AsyncOperationAction extends AsyncAction {
124
+ operationId: string;
125
+ context: OperationContext;
126
+ logLevel: WorkerLogLevel;
127
+ constructor(operationId: string, context: OperationContext, logLevel?: WorkerLogLevel);
88
128
  /**
89
- * Method to run
129
+ * Execute a webda.callOperation(context ,id) so this is internal
130
+ * @returns
90
131
  */
91
- method: string;
132
+ isInternal(): boolean;
92
133
  }
93
134
  export { AsyncAction };
package/lib/models.js CHANGED
@@ -4,11 +4,69 @@ import { CoreModel } from "@webda/core";
4
4
  * @WebdaModel
5
5
  */
6
6
  export default class AsyncAction extends CoreModel {
7
+ /**
8
+ * Set type
9
+ */
10
+ constructor() {
11
+ super();
12
+ this.type = this.constructor.name;
13
+ }
14
+ /**
15
+ * By default AsyncAction are not considered internal
16
+ *
17
+ * Internal: That execute a method or operation of Webda application framework
18
+ * @returns
19
+ */
20
+ isInternal() {
21
+ return false;
22
+ }
7
23
  }
8
24
  /**
9
25
  * Define a Webda Async Action
26
+ *
27
+ * @WebdaModel
28
+ */
29
+ export class AsyncWebdaAction extends AsyncAction {
30
+ /**
31
+ *
32
+ * @param serviceName service to call
33
+ * @param method method to call
34
+ * @param arguments to call with the method
35
+ */
36
+ constructor(serviceName, method, ...args) {
37
+ super();
38
+ this.serviceName = serviceName;
39
+ this.method = method;
40
+ this.logLevel = "INFO";
41
+ this.arguments = args;
42
+ }
43
+ /**
44
+ * Execute a serviceName.method(...args) so this is internal
45
+ * @returns
46
+ */
47
+ isInternal() {
48
+ return true;
49
+ }
50
+ }
51
+ /**
52
+ * Operation called asynchronously
53
+ *
54
+ * @WebdaModel
10
55
  */
11
- export class WebdaAsyncAction extends AsyncAction {
56
+ export class AsyncOperationAction extends AsyncAction {
57
+ constructor(operationId, context, logLevel = "INFO") {
58
+ super();
59
+ this.operationId = operationId;
60
+ this.context = context;
61
+ this.logLevel = logLevel;
62
+ }
63
+ /**
64
+ * Execute a webda.callOperation(context ,id) so this is internal
65
+ * @returns
66
+ */
67
+ isInternal() {
68
+ return true;
69
+ }
12
70
  }
13
71
  export { AsyncAction };
14
72
  //# sourceMappingURL=models.js.map
package/lib/models.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBxC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;CA2DjD;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;CAShD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AA0B1D;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CAgEF;AAED;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAE/C;;;;;OAKG;IACH,YAAmB,WAAoB,EAAS,MAAe,EAAE,GAAG,IAAW;QAC7E,KAAK,EAAE,CAAC;QADS,gBAAW,GAAX,WAAW,CAAS;QAAS,WAAM,GAAN,MAAM,CAAS;QAPxD,aAAQ,GAAmB,MAAM,CAAC;QASvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,YAAmB,WAAmB,EAAS,OAAyB,EAAS,WAA2B,MAAM;QAChH,KAAK,EAAE,CAAC;QADS,gBAAW,GAAX,WAAW,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAkB;QAAS,aAAQ,GAAR,QAAQ,CAAyB;IAElH,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { CloudBinary, Context, Queue, RequestFilter, Service, ServiceParameters, Store } from "@webda/core";
2
- import { AsyncAction, AsyncActionQueueItem } from "../models.js";
1
+ import { CancelableLoopPromise, CloudBinary, Context, CronDefinition, Queue, RequestFilter, Service, ServiceParameters, Store } from "@webda/core";
2
+ import { AsyncAction, AsyncActionQueueItem, AsyncWebdaAction } from "../models.js";
3
3
  import { Runner } from "./runner.js";
4
4
  /**
5
5
  * Represent a Job information as you will find in env
@@ -55,6 +55,35 @@ export declare class AsyncJobServiceParameters extends ServiceParameters {
55
55
  * Limit the maximum number of jobs running in //
56
56
  */
57
57
  concurrencyLimit?: number;
58
+ /**
59
+ * Define if we should only use an http hook and not rely on store for AsyncOperation
60
+ *
61
+ * @default false
62
+ */
63
+ onlyHttpHook?: boolean;
64
+ /**
65
+ * Include Cron annotation to launch them as AsyncOperationAction
66
+ *
67
+ * @default true
68
+ */
69
+ includeCron?: boolean;
70
+ /**
71
+ * Schedule action resolution
72
+ *
73
+ * If set to 1000ms, you can schedule action per second
74
+ * by default it resolve per minute
75
+ *
76
+ * @default 60000
77
+ */
78
+ schedulerResolution?: number;
79
+ /**
80
+ * Limit the number of lines of logs available for an async action
81
+ *
82
+ * If you need to store large amount of logs then you should use the CloudWatchLogger or similar logger
83
+ *
84
+ * @default 500
85
+ */
86
+ logsLimit: number;
58
87
  constructor(params: any);
59
88
  }
60
89
  /**
@@ -107,6 +136,14 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
107
136
  * Only updates specific fields: status, errorMessage, statusDetails, results, logs (appending)
108
137
  */
109
138
  protected statusHook(context: Context): Promise<void>;
139
+ /**
140
+ * Update the async action from hook
141
+ * @param action
142
+ * @param body
143
+ * @param lastUpdate
144
+ * @returns
145
+ */
146
+ protected updateAction(action: AsyncAction, body: Partial<AsyncAction>, lastUpdate?: number): Promise<AsyncAction>;
110
147
  /**
111
148
  * Worker
112
149
  *
@@ -124,6 +161,13 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
124
161
  * @returns
125
162
  */
126
163
  launchAction(action: AsyncAction): Promise<void>;
164
+ /**
165
+ * Schedule action for later execution
166
+ *
167
+ * @param action
168
+ * @param timestamp
169
+ */
170
+ scheduleAction(action: AsyncAction, timestamp: number): Promise<void>;
127
171
  /**
128
172
  * Return headers to request status hook
129
173
  *
@@ -133,9 +177,34 @@ export default class AsyncJobService<T extends AsyncJobServiceParameters = Async
133
177
  getHeaders(jobInfo: JobInfo): {
134
178
  [key: string]: string;
135
179
  };
180
+ /**
181
+ * Post hook to a remote url or use local store to update status
182
+ * @param jobInfo
183
+ * @param message
184
+ * @returns
185
+ */
186
+ postHook(jobInfo: JobInfo, message: any): Promise<AsyncWebdaAction>;
187
+ /**
188
+ * Launch a service.method as an AsyncAction
189
+ * @param serviceName
190
+ * @param method
191
+ * @param args
192
+ */
193
+ launchAsAsyncAction(serviceName: string, method: string, ...args: any[]): Promise<void>;
136
194
  /**
137
195
  * Wrap async job and call the job status hook
138
196
  */
139
- runWebdaAsyncAction(jobInfo?: JobInfo): Promise<void>;
197
+ runAsyncOperationAction(jobInfo?: JobInfo): Promise<void>;
198
+ /**
199
+ * Get the cron callback function
200
+ * @param cron
201
+ * @returns
202
+ */
203
+ getCronExecutor(cron: CronDefinition): () => Promise<void>;
204
+ /**
205
+ * Manage scheduled actions and crontab actions
206
+ * @returns
207
+ */
208
+ scheduler(): CancelableLoopPromise;
140
209
  }
141
210
  export { AsyncJobService };
@@ -1,7 +1,9 @@
1
- import { Service, ServiceParameters } from "@webda/core";
1
+ import { CancelableLoopPromise, Core, CronService, Service, ServiceParameters } from "@webda/core";
2
2
  import axios from "axios";
3
3
  import * as crypto from "crypto";
4
+ import { schedule as crontabSchedule } from "node-cron";
4
5
  import { v4 as uuidv4 } from "uuid";
6
+ import { AsyncWebdaAction } from "../models.js";
5
7
  import { Runner } from "./runner.js";
6
8
  /**
7
9
  * @inheritdoc
@@ -13,6 +15,10 @@ export class AsyncJobServiceParameters extends ServiceParameters {
13
15
  this.queue ?? (this.queue = "AsyncActionsQueue");
14
16
  this.store ?? (this.store = "AsyncActions");
15
17
  this.runners ?? (this.runners = []);
18
+ this.schedulerResolution ?? (this.schedulerResolution = 60000);
19
+ this.onlyHttpHook ?? (this.onlyHttpHook = false);
20
+ this.includeCron ?? (this.includeCron = true);
21
+ this.logsLimit ?? (this.logsLimit = 500);
16
22
  }
17
23
  }
18
24
  /**
@@ -33,7 +39,7 @@ export default class AsyncJobService extends Service {
33
39
  resolve() {
34
40
  super.resolve();
35
41
  this.queue = this.getService(this.parameters.queue);
36
- if (!this.queue) {
42
+ if (!this.queue && !this.parameters.localLaunch) {
37
43
  throw new Error(`AsyncService requires a valid queue. '${this.parameters.queue}' is invalid`);
38
44
  }
39
45
  this.store = this.getService(this.parameters.store);
@@ -119,17 +125,28 @@ export default class AsyncJobService extends Service {
119
125
  * Only updates specific fields: status, errorMessage, statusDetails, results, logs (appending)
120
126
  */
121
127
  async statusHook(context) {
122
- const action = await this.verifyJobRequest(context);
128
+ let action = await this.verifyJobRequest(context);
123
129
  const body = await context.getRequestBody();
124
- action._lastJobUpdate = Number.parseInt(context.getHttpContext().getUniqueHeader("X-Job-Time")) || 0;
130
+ action = await this.updateAction(action, body, Number.parseInt(context.getHttpContext().getUniqueHeader("X-Job-Time")) || 0);
131
+ context.write({ ...action, logs: undefined, statusDetails: undefined });
132
+ }
133
+ /**
134
+ * Update the async action from hook
135
+ * @param action
136
+ * @param body
137
+ * @param lastUpdate
138
+ * @returns
139
+ */
140
+ async updateAction(action, body, lastUpdate = 0) {
141
+ action._lastJobUpdate = lastUpdate;
125
142
  if (Date.now() - action._lastJobUpdate > 60) {
126
143
  action._lastJobUpdate = Date.now();
127
144
  }
128
145
  if (body.logs && Array.isArray(body.logs)) {
129
146
  action.logs.push(...body.logs);
130
147
  // Prevent having too much logs
131
- if (action.logs.length > 100) {
132
- action.logs = action.logs.slice(-100);
148
+ if (action.logs.length > this.parameters.logsLimit) {
149
+ action.logs = action.logs.slice(-1 * this.parameters.logsLimit);
133
150
  }
134
151
  }
135
152
  ["status", "errorMessage", "statusDetails", "results"].forEach(k => {
@@ -138,8 +155,8 @@ export default class AsyncJobService extends Service {
138
155
  action[k] = body[k];
139
156
  }
140
157
  });
141
- await this.store.save(action);
142
- context.write({ ...action, logs: undefined, statusDetails: undefined });
158
+ await this.store.patch(action);
159
+ return action;
143
160
  }
144
161
  /**
145
162
  * Worker
@@ -185,7 +202,7 @@ export default class AsyncJobService extends Service {
185
202
  const info = {
186
203
  JOB_SECRET_KEY: action.__secretKey,
187
204
  JOB_ID: action.getUuid(),
188
- JOB_HOOK: this.getWebda().getApiUrl(this.parameters.url),
205
+ JOB_HOOK: this.parameters.onlyHttpHook || !action.isInternal() ? this.getWebda().getApiUrl(this.parameters.url) : "store",
189
206
  JOB_ORCHESTRATOR: this.getName()
190
207
  };
191
208
  await action.patch({
@@ -207,6 +224,19 @@ export default class AsyncJobService extends Service {
207
224
  }
208
225
  return this.queue.sendMessage({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
209
226
  }
227
+ /**
228
+ * Schedule action for later execution
229
+ *
230
+ * @param action
231
+ * @param timestamp
232
+ */
233
+ async scheduleAction(action, timestamp) {
234
+ action.status = "SCHEDULED";
235
+ action.type = action.constructor.name;
236
+ // Schedule based on the scheduler resolution
237
+ action.scheduled = timestamp - (timestamp % this.parameters.schedulerResolution);
238
+ await this.store.save(action);
239
+ }
210
240
  /**
211
241
  * Return headers to request status hook
212
242
  *
@@ -224,10 +254,37 @@ export default class AsyncJobService extends Service {
224
254
  .digest("hex");
225
255
  return res;
226
256
  }
257
+ /**
258
+ * Post hook to a remote url or use local store to update status
259
+ * @param jobInfo
260
+ * @param message
261
+ * @returns
262
+ */
263
+ async postHook(jobInfo, message) {
264
+ // Http allow to break paradigm between the executor and the orchestrator
265
+ if (jobInfo.JOB_HOOK.startsWith("http")) {
266
+ return (await axios.post(jobInfo.JOB_HOOK, message, {
267
+ headers: this.getHeaders(jobInfo)
268
+ })).data;
269
+ }
270
+ else if (jobInfo.JOB_HOOK === "store") {
271
+ // If executor and orchestrator runs within same privilege it simplify the infrastructure
272
+ return this.updateAction(await this.store.get(jobInfo.JOB_ID), message);
273
+ }
274
+ }
275
+ /**
276
+ * Launch a service.method as an AsyncAction
277
+ * @param serviceName
278
+ * @param method
279
+ * @param args
280
+ */
281
+ async launchAsAsyncAction(serviceName, method, ...args) {
282
+ return this.launchAction(new AsyncWebdaAction(serviceName, method, ...args));
283
+ }
227
284
  /**
228
285
  * Wrap async job and call the job status hook
229
286
  */
230
- async runWebdaAsyncAction(jobInfo) {
287
+ async runAsyncOperationAction(jobInfo) {
231
288
  // Get it from environment
232
289
  if (jobInfo === undefined) {
233
290
  jobInfo = {};
@@ -238,22 +295,24 @@ export default class AsyncJobService extends Service {
238
295
  }
239
296
  // Ensure correct context
240
297
  if (!jobInfo.JOB_ORCHESTRATOR || !jobInfo.JOB_ID || !jobInfo.JOB_SECRET_KEY || !jobInfo.JOB_HOOK) {
298
+ this.log("ERROR", "Cannot run AsyncAction without context");
241
299
  throw new Error("Cannot run AsyncAction without context");
242
300
  }
243
301
  // If we are not the target redirect to the right one
244
302
  if (jobInfo.JOB_ORCHESTRATOR !== this.getName()) {
245
- return this.getService(jobInfo.JOB_ORCHESTRATOR).runWebdaAsyncAction(jobInfo);
303
+ this.log("DEBUG", `Passing jobInfo ${jobInfo} to targeted service`);
304
+ return this.getService(jobInfo.JOB_ORCHESTRATOR).runAsyncOperationAction(jobInfo);
246
305
  }
306
+ this.log("DEBUG", "Getting action to execute from hook", jobInfo);
247
307
  // Get action info by calling the hook
248
- let action = (await axios.post(jobInfo.JOB_HOOK, {
308
+ let action = await this.postHook(jobInfo, {
249
309
  agent: {
250
310
  ...Runner.getAgentInfo(),
251
311
  nodeVersion: process.version
252
312
  },
253
313
  status: "RUNNING"
254
- }, {
255
- headers: this.getHeaders(jobInfo)
256
- })).data;
314
+ });
315
+ this.log("DEBUG", "Action received", action.serviceName, action.method, action.arguments);
257
316
  let results;
258
317
  try {
259
318
  // Check it contains the right info
@@ -274,20 +333,59 @@ export default class AsyncJobService extends Service {
274
333
  }
275
334
  catch (err) {
276
335
  // Job is in error
277
- await axios.post(jobInfo.JOB_HOOK, {
336
+ await this.postHook(jobInfo, {
278
337
  errorMessage: err?.message,
279
338
  status: "ERROR"
280
- }, {
281
- headers: this.getHeaders(jobInfo)
282
339
  });
283
340
  return;
284
341
  }
285
342
  // Update status
286
- await axios.post(jobInfo.JOB_HOOK, {
343
+ await this.postHook(jobInfo, {
287
344
  results,
288
345
  status: "SUCCESS"
289
- }, {
290
- headers: this.getHeaders(jobInfo)
346
+ });
347
+ }
348
+ /**
349
+ * Get the cron callback function
350
+ * @param cron
351
+ * @returns
352
+ */
353
+ getCronExecutor(cron) {
354
+ return async () => {
355
+ try {
356
+ this.log("INFO", `Execute cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description} as an AsyncOperationAction`);
357
+ await this.launchAction(new AsyncWebdaAction(cron.serviceName, cron.method, cron.args));
358
+ }
359
+ catch (err) {
360
+ this.log("ERROR", `Execution error cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description} - ${err}`);
361
+ }
362
+ };
363
+ }
364
+ /**
365
+ * Manage scheduled actions and crontab actions
366
+ * @returns
367
+ */
368
+ scheduler() {
369
+ // Map cron to an AsyncOperationAction
370
+ // It allows you to keep a trace of the cron execution in the AsyncAction
371
+ if (this.parameters.includeCron) {
372
+ CronService.loadAnnotations(this._webda.getServices()).forEach(cron => {
373
+ this.log("INFO", `Schedule cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description}`);
374
+ crontabSchedule(cron.cron, this.getCronExecutor(cron));
375
+ });
376
+ }
377
+ // Every schedulerResolution will check for scheduled task
378
+ return new CancelableLoopPromise(async () => {
379
+ let time = Date.now();
380
+ time -= time % this.parameters.schedulerResolution;
381
+ // Queue all actions
382
+ await Promise.all((await this.store.query(`status = 'SCHEDULED' AND scheduled < ${time + 1}`)).results.map(a => this.launchAction(a)));
383
+ time += this.parameters.schedulerResolution;
384
+ // Wait for next scheduler resolution
385
+ if (time > Date.now()) {
386
+ await Core.sleep(time - Date.now());
387
+ /* c8 ignore next */
388
+ }
291
389
  });
292
390
  }
293
391
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asyncjobservice.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asyncjobservice.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /// <reference types="node" />
2
+ import { MemoryLogger, WorkerLogLevel, WorkerMessage, WorkerOutput } from "@webda/workout";
3
+ import { AsyncAction } from "../models.js";
4
+ import { JobInfo } from "./asyncjobservice.js";
5
+ import { AgentInfo, Runner, RunnerParameters } from "./runner.js";
6
+ /**
7
+ * Type of action returned by LocalRunner
8
+ */
9
+ export interface ServiceAction {
10
+ /**
11
+ * Info on the server running it
12
+ */
13
+ agent: AgentInfo;
14
+ /**
15
+ * Promise of the implementation
16
+ *
17
+ * Useful for unit test
18
+ */
19
+ promise: Promise<void>;
20
+ }
21
+ /**
22
+ * Keep log in memory and save it to the action object every 5s
23
+ */
24
+ export declare class ActionMemoryLogger extends MemoryLogger {
25
+ protected action: AsyncAction;
26
+ logSaveDelay: number;
27
+ format?: string;
28
+ protected timeout: NodeJS.Timeout;
29
+ constructor(output: WorkerOutput, level: WorkerLogLevel, limit: number, action: AsyncAction, logSaveDelay: number, format?: string);
30
+ onMessage(msg: WorkerMessage): void;
31
+ save(): Promise<void>;
32
+ saveAndClose(): Promise<void>;
33
+ }
34
+ /**
35
+ * Add the log format to capture
36
+ */
37
+ export declare class ServiceRunnerParameters extends RunnerParameters {
38
+ /**
39
+ * Define the log format
40
+ *
41
+ * @default ConsoleLoggerDefaultFormat
42
+ */
43
+ logFormat?: string;
44
+ /**
45
+ * How long before saving logs (in ms)
46
+ *
47
+ * @default 5000
48
+ */
49
+ logSaveDelay?: number;
50
+ constructor(params: any);
51
+ }
52
+ /**
53
+ * Run a Job locally on the server by spawning a child process
54
+ *
55
+ * @WebdaModda
56
+ */
57
+ export default class ServiceRunner<T extends ServiceRunnerParameters = ServiceRunnerParameters> extends Runner<T> {
58
+ /**
59
+ * Load parameters
60
+ * @param params
61
+ * @returns
62
+ */
63
+ loadParameters(params: any): ServiceRunnerParameters;
64
+ /**
65
+ * @inheritdoc
66
+ */
67
+ launchAction(action: AsyncAction, info: JobInfo): Promise<ServiceAction>;
68
+ }
@@ -0,0 +1,94 @@
1
+ import { ConsoleLogger, MemoryLogger } from "@webda/workout";
2
+ import { Runner, RunnerParameters } from "./runner.js";
3
+ /**
4
+ * Keep log in memory and save it to the action object every 5s
5
+ */
6
+ export class ActionMemoryLogger extends MemoryLogger {
7
+ constructor(output, level, limit, action, logSaveDelay, format) {
8
+ super(output, level, limit);
9
+ this.action = action;
10
+ this.logSaveDelay = logSaveDelay;
11
+ this.format = format;
12
+ }
13
+ onMessage(msg) {
14
+ super.onMessage(msg);
15
+ if (!this.timeout) {
16
+ setTimeout(() => this.save(), this.logSaveDelay);
17
+ }
18
+ }
19
+ save() {
20
+ this.timeout = undefined;
21
+ return this.action.patch({ logs: this.getLogs().map(msg => ConsoleLogger.format(msg, this.format)) }, null);
22
+ }
23
+ async saveAndClose() {
24
+ this.close();
25
+ return this.save();
26
+ }
27
+ }
28
+ /**
29
+ * Add the log format to capture
30
+ */
31
+ export class ServiceRunnerParameters extends RunnerParameters {
32
+ constructor(params) {
33
+ super(params);
34
+ this.logSaveDelay ?? (this.logSaveDelay = 5000);
35
+ }
36
+ }
37
+ /**
38
+ * Run a Job locally on the server by spawning a child process
39
+ *
40
+ * @WebdaModda
41
+ */
42
+ export default class ServiceRunner extends Runner {
43
+ /**
44
+ * Load parameters
45
+ * @param params
46
+ * @returns
47
+ */
48
+ loadParameters(params) {
49
+ return new ServiceRunnerParameters(params);
50
+ }
51
+ /**
52
+ * @inheritdoc
53
+ */
54
+ async launchAction(action, info) {
55
+ if (action.type !== "AsyncWebdaAction" && action.type !== "AsyncOperationAction") {
56
+ this.log("ERROR", "Can only handle AsyncWebdaAction or AsyncOperationAction got", action.type);
57
+ throw new Error("Can only handle AsyncWebdaAction or AsyncOperationAction got " + action.type);
58
+ }
59
+ // Launch within current process
60
+ let promise = (async (action) => {
61
+ let logger;
62
+ try {
63
+ await action.patch({ status: "RUNNING" });
64
+ this.log("INFO", "Job", action.getUuid(), "started");
65
+ // Inject a MemoryLogger to capture and report any logs
66
+ logger = new ActionMemoryLogger(this.getWebda().getWorkerOutput(), action.logLevel, this.getService(info.JOB_ORCHESTRATOR)?.getParameters().logsLimit || 5000, action, this.parameters.logSaveDelay, this.parameters.logFormat);
67
+ if (action.type === "AsyncWebdaAction") {
68
+ const webdaAction = action;
69
+ await this.getService(webdaAction.serviceName)[webdaAction.method](...(webdaAction.arguments || []));
70
+ }
71
+ else {
72
+ const operationAction = action;
73
+ await this.getWebda().callOperation(operationAction.context, operationAction.operationId);
74
+ }
75
+ await logger.saveAndClose();
76
+ await action.patch({ status: "SUCCESS" });
77
+ this.log("INFO", "Job", action.getUuid(), "finished");
78
+ }
79
+ catch (err) {
80
+ await logger?.saveAndClose();
81
+ await action.patch({
82
+ status: "ERROR",
83
+ errorMessage: JSON.stringify(err, Object.getOwnPropertyNames(err))
84
+ });
85
+ this.log("INFO", "Job", action.getUuid(), "errored", err);
86
+ }
87
+ })(action);
88
+ return {
89
+ agent: Runner.getAgentInfo(),
90
+ promise
91
+ };
92
+ }
93
+ }
94
+ //# sourceMappingURL=servicerunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicerunner.js","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@webda/async",
3
- "version": "2.1.5",
3
+ "version": "2.2.0",
4
4
  "description": "Async System",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
7
  "build": "tsc-esm",
8
8
  "build:module": "webda build",
9
+ "build:watch": "webda build --watch",
9
10
  "pretest": "npm run build",
10
11
  "test": "c8 mocha --recursive --exit --timeout=100000 -r ../../node_modules/ts-node/register src/**/*.spec.ts",
11
12
  "run": "node core"
@@ -19,17 +20,17 @@
19
20
  "package.json"
20
21
  ],
21
22
  "dependencies": {
22
- "@webda/core": "^2.1.5",
23
+ "@webda/core": "^2.2.0",
23
24
  "axios": "^1.1.3"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@types/node": "14.6.0",
27
- "@webda/tsc-esm": "^1.0.1",
28
+ "@webda/tsc-esm": "^1.0.2",
28
29
  "mocha": "^10.0.0",
29
- "sinon": "^14.0.0",
30
+ "sinon": "^15.0.0",
30
31
  "source-map-support": "^0.5.19",
31
32
  "ts-node": "^10.2.0",
32
- "typescript": "~4.8.2"
33
+ "typescript": "~4.9.3"
33
34
  },
34
35
  "c8": {
35
36
  "report-dir": "./reports",
@@ -61,5 +62,5 @@
61
62
  "engines": {
62
63
  "node": ">=14.6.0"
63
64
  },
64
- "gitHead": "f8603d252baf83769b4906eff55c4d38e0934a1d"
65
+ "gitHead": "e507a18418e927daed6ccb4814412c56c870d951"
65
66
  }
package/webda.module.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "moddas": {
3
3
  "webda/asyncjobservice": "lib/services/asyncjobservice:default",
4
- "webda/localrunner": "lib/services/localrunner:default"
4
+ "webda/localrunner": "lib/services/localrunner:default",
5
+ "webda/servicerunner": "lib/services/servicerunner:default"
5
6
  },
6
7
  "beans": {},
7
8
  "models": {
8
- "webda/asyncaction": "lib/models:default"
9
+ "webda/asyncaction": "lib/models:default",
10
+ "webda/asyncoperationaction": "lib/models:AsyncOperationAction",
11
+ "webda/asyncwebdaaction": "lib/models:AsyncWebdaAction"
9
12
  },
10
13
  "deployers": {},
11
14
  "schemas": {
@@ -36,10 +39,15 @@
36
39
  "ERROR",
37
40
  "QUEUED",
38
41
  "STARTING",
39
- "TIMEOUT"
42
+ "TIMEOUT",
43
+ "SCHEDULED"
40
44
  ],
41
45
  "description": "Current status"
42
46
  },
47
+ "scheduled": {
48
+ "type": "number",
49
+ "description": "Timestamp when the action was scheduled"
50
+ },
43
51
  "errorMessage": {
44
52
  "type": "string",
45
53
  "description": "If an error occured it should contain the message"
@@ -91,6 +99,282 @@
91
99
  "$schema": "http://json-schema.org/draft-07/schema#",
92
100
  "title": "AsyncAction"
93
101
  },
102
+ "webda/asyncwebdaaction": {
103
+ "type": "object",
104
+ "properties": {
105
+ "_creationDate": {
106
+ "type": "string",
107
+ "format": "date-time",
108
+ "description": "Creation date",
109
+ "readOnly": true
110
+ },
111
+ "_lastUpdate": {
112
+ "type": "string",
113
+ "format": "date-time",
114
+ "description": "Last update date",
115
+ "readOnly": true
116
+ },
117
+ "uuid": {
118
+ "type": "string",
119
+ "description": "Action uuid"
120
+ },
121
+ "status": {
122
+ "type": "string",
123
+ "enum": [
124
+ "RUNNING",
125
+ "SUCCESS",
126
+ "ERROR",
127
+ "QUEUED",
128
+ "STARTING",
129
+ "TIMEOUT",
130
+ "SCHEDULED"
131
+ ],
132
+ "description": "Current status"
133
+ },
134
+ "scheduled": {
135
+ "type": "number",
136
+ "description": "Timestamp when the action was scheduled"
137
+ },
138
+ "errorMessage": {
139
+ "type": "string",
140
+ "description": "If an error occured it should contain the message"
141
+ },
142
+ "job": {
143
+ "type": "object",
144
+ "description": "Job information"
145
+ },
146
+ "_lastJobUpdate": {
147
+ "type": "number",
148
+ "description": "Last time the job was updated",
149
+ "readOnly": true
150
+ },
151
+ "results": {
152
+ "description": "Results from the job"
153
+ },
154
+ "statusDetails": {
155
+ "description": "Job current status"
156
+ },
157
+ "type": {
158
+ "type": "string"
159
+ },
160
+ "arguments": {
161
+ "type": "array",
162
+ "items": {}
163
+ },
164
+ "logs": {
165
+ "type": "array",
166
+ "items": {
167
+ "type": "string"
168
+ },
169
+ "description": "Current logs"
170
+ },
171
+ "action": {
172
+ "type": "string",
173
+ "description": "Expected action for the job\n\nIt should be a verb"
174
+ },
175
+ "logLevel": {
176
+ "$ref": "#/definitions/WorkerLogLevel"
177
+ },
178
+ "serviceName": {
179
+ "type": "string",
180
+ "description": "service to call"
181
+ },
182
+ "method": {
183
+ "type": "string",
184
+ "description": "method to call"
185
+ }
186
+ },
187
+ "required": [
188
+ "job",
189
+ "logLevel",
190
+ "logs",
191
+ "results",
192
+ "status",
193
+ "statusDetails",
194
+ "type",
195
+ "uuid"
196
+ ],
197
+ "description": "Define a Webda Async Action",
198
+ "$schema": "http://json-schema.org/draft-07/schema#",
199
+ "definitions": {
200
+ "WorkerLogLevel": {
201
+ "type": "string",
202
+ "enum": [
203
+ "ERROR",
204
+ "WARN",
205
+ "INFO",
206
+ "DEBUG",
207
+ "TRACE"
208
+ ],
209
+ "description": "LogLevel as intersection to compare with integer values"
210
+ }
211
+ },
212
+ "title": "AsyncWebdaAction"
213
+ },
214
+ "webda/asyncoperationaction": {
215
+ "type": "object",
216
+ "properties": {
217
+ "_creationDate": {
218
+ "type": "string",
219
+ "format": "date-time",
220
+ "description": "Creation date",
221
+ "readOnly": true
222
+ },
223
+ "_lastUpdate": {
224
+ "type": "string",
225
+ "format": "date-time",
226
+ "description": "Last update date",
227
+ "readOnly": true
228
+ },
229
+ "uuid": {
230
+ "type": "string",
231
+ "description": "Action uuid"
232
+ },
233
+ "status": {
234
+ "type": "string",
235
+ "enum": [
236
+ "RUNNING",
237
+ "SUCCESS",
238
+ "ERROR",
239
+ "QUEUED",
240
+ "STARTING",
241
+ "TIMEOUT",
242
+ "SCHEDULED"
243
+ ],
244
+ "description": "Current status"
245
+ },
246
+ "scheduled": {
247
+ "type": "number",
248
+ "description": "Timestamp when the action was scheduled"
249
+ },
250
+ "errorMessage": {
251
+ "type": "string",
252
+ "description": "If an error occured it should contain the message"
253
+ },
254
+ "job": {
255
+ "type": "object",
256
+ "description": "Job information"
257
+ },
258
+ "_lastJobUpdate": {
259
+ "type": "number",
260
+ "description": "Last time the job was updated",
261
+ "readOnly": true
262
+ },
263
+ "results": {
264
+ "description": "Results from the job"
265
+ },
266
+ "statusDetails": {
267
+ "description": "Job current status"
268
+ },
269
+ "type": {
270
+ "type": "string"
271
+ },
272
+ "arguments": {
273
+ "type": "array",
274
+ "items": {}
275
+ },
276
+ "logs": {
277
+ "type": "array",
278
+ "items": {
279
+ "type": "string"
280
+ },
281
+ "description": "Current logs"
282
+ },
283
+ "action": {
284
+ "type": "string",
285
+ "description": "Expected action for the job\n\nIt should be a verb"
286
+ },
287
+ "operationId": {
288
+ "type": "string"
289
+ },
290
+ "context": {
291
+ "type": "object",
292
+ "properties": {
293
+ "_promises": {
294
+ "type": "array",
295
+ "items": {
296
+ "type": "object"
297
+ },
298
+ "description": "Contain all registered promises to this context",
299
+ "readOnly": true
300
+ },
301
+ "_stream": {
302
+ "type": "object",
303
+ "properties": {
304
+ "writable": {
305
+ "type": "boolean"
306
+ },
307
+ "writableEnded": {
308
+ "type": "boolean"
309
+ },
310
+ "writableFinished": {
311
+ "type": "boolean"
312
+ },
313
+ "writableHighWaterMark": {
314
+ "type": "number"
315
+ },
316
+ "writableLength": {
317
+ "type": "number"
318
+ },
319
+ "writableObjectMode": {
320
+ "type": "boolean"
321
+ },
322
+ "writableCorked": {
323
+ "type": "number"
324
+ },
325
+ "destroyed": {
326
+ "type": "boolean"
327
+ }
328
+ },
329
+ "required": [
330
+ "destroyed",
331
+ "writable",
332
+ "writableCorked",
333
+ "writableEnded",
334
+ "writableFinished",
335
+ "writableHighWaterMark",
336
+ "writableLength",
337
+ "writableObjectMode"
338
+ ],
339
+ "description": "Output stream",
340
+ "readOnly": true
341
+ }
342
+ },
343
+ "description": "OperationContext is used when call to an operation"
344
+ },
345
+ "logLevel": {
346
+ "$ref": "#/definitions/WorkerLogLevel"
347
+ }
348
+ },
349
+ "required": [
350
+ "context",
351
+ "job",
352
+ "logLevel",
353
+ "logs",
354
+ "operationId",
355
+ "results",
356
+ "status",
357
+ "statusDetails",
358
+ "type",
359
+ "uuid"
360
+ ],
361
+ "description": "Operation called asynchronously",
362
+ "$schema": "http://json-schema.org/draft-07/schema#",
363
+ "definitions": {
364
+ "WorkerLogLevel": {
365
+ "type": "string",
366
+ "enum": [
367
+ "ERROR",
368
+ "WARN",
369
+ "INFO",
370
+ "DEBUG",
371
+ "TRACE"
372
+ ],
373
+ "description": "LogLevel as intersection to compare with integer values"
374
+ }
375
+ },
376
+ "title": "AsyncOperationAction"
377
+ },
94
378
  "webda/asyncjobservice": {
95
379
  "type": "object",
96
380
  "properties": {
@@ -138,6 +422,26 @@
138
422
  "type": "number",
139
423
  "description": "Limit the maximum number of jobs running in //"
140
424
  },
425
+ "onlyHttpHook": {
426
+ "type": "boolean",
427
+ "description": "Define if we should only use an http hook and not rely on store for AsyncOperation",
428
+ "default": false
429
+ },
430
+ "includeCron": {
431
+ "type": "boolean",
432
+ "description": "Include Cron annotation to launch them as AsyncOperationAction",
433
+ "default": true
434
+ },
435
+ "schedulerResolution": {
436
+ "type": "number",
437
+ "description": "Schedule action resolution\n\nIf set to 1000ms, you can schedule action per second by default it resolve per minute",
438
+ "default": 60000
439
+ },
440
+ "logsLimit": {
441
+ "type": "number",
442
+ "description": "Limit the number of lines of logs available for an async action\n\nIf you need to store large amount of logs then you should use the CloudWatchLogger or similar logger",
443
+ "default": 500
444
+ },
141
445
  "openapi": {
142
446
  "type": "object",
143
447
  "additionalProperties": true
@@ -145,6 +449,7 @@
145
449
  },
146
450
  "required": [
147
451
  "fallbackOnFirst",
452
+ "logsLimit",
148
453
  "queue",
149
454
  "runners",
150
455
  "store",
@@ -310,6 +615,47 @@
310
615
  }
311
616
  },
312
617
  "title": "LocalRunner"
618
+ },
619
+ "webda/servicerunner": {
620
+ "type": "object",
621
+ "properties": {
622
+ "type": {
623
+ "type": "string",
624
+ "description": "Type of the service"
625
+ },
626
+ "url": {
627
+ "type": "string",
628
+ "description": "URL on which to serve the content"
629
+ },
630
+ "actions": {
631
+ "type": "array",
632
+ "items": {
633
+ "type": "string"
634
+ },
635
+ "description": "Actions managed by the runner",
636
+ "default": []
637
+ },
638
+ "logFormat": {
639
+ "type": "string",
640
+ "description": "Define the log format",
641
+ "default": "ConsoleLoggerDefaultFormat"
642
+ },
643
+ "logSaveDelay": {
644
+ "type": "number",
645
+ "description": "How long before saving logs (in ms)",
646
+ "default": 5000
647
+ },
648
+ "openapi": {
649
+ "type": "object",
650
+ "additionalProperties": true
651
+ }
652
+ },
653
+ "required": [
654
+ "type"
655
+ ],
656
+ "description": "Add the log format to capture",
657
+ "$schema": "http://json-schema.org/draft-07/schema#",
658
+ "title": "ServiceRunner"
313
659
  }
314
660
  }
315
661
  }