@memberjunction/scheduling-engine 5.40.2 → 5.42.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/README.md +35 -0
- package/dist/BaseScheduledJob.d.ts +29 -0
- package/dist/BaseScheduledJob.d.ts.map +1 -1
- package/dist/BaseScheduledJob.js.map +1 -1
- package/dist/ScheduledJobEngine.d.ts +63 -0
- package/dist/ScheduledJobEngine.d.ts.map +1 -1
- package/dist/ScheduledJobEngine.js +154 -18
- package/dist/ScheduledJobEngine.js.map +1 -1
- package/dist/drivers/ActionScheduledJobDriver.d.ts.map +1 -1
- package/dist/drivers/ActionScheduledJobDriver.js +12 -3
- package/dist/drivers/ActionScheduledJobDriver.js.map +1 -1
- package/dist/drivers/AgentScheduledJobDriver.d.ts.map +1 -1
- package/dist/drivers/AgentScheduledJobDriver.js +9 -2
- package/dist/drivers/AgentScheduledJobDriver.js.map +1 -1
- package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.d.ts +29 -0
- package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.d.ts.map +1 -0
- package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.js +136 -0
- package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.js.map +1 -0
- package/dist/drivers/IntegrationSyncScheduledJobDriver.d.ts.map +1 -1
- package/dist/drivers/IntegrationSyncScheduledJobDriver.js +5 -2
- package/dist/drivers/IntegrationSyncScheduledJobDriver.js.map +1 -1
- package/dist/drivers/RecordProcessScheduledJobDriver.d.ts +20 -0
- package/dist/drivers/RecordProcessScheduledJobDriver.d.ts.map +1 -0
- package/dist/drivers/RecordProcessScheduledJobDriver.js +81 -0
- package/dist/drivers/RecordProcessScheduledJobDriver.js.map +1 -0
- package/dist/drivers/index.d.ts +2 -0
- package/dist/drivers/index.d.ts.map +1 -1
- package/dist/drivers/index.js +2 -0
- package/dist/drivers/index.js.map +1 -1
- package/package.json +13 -12
package/README.md
CHANGED
|
@@ -202,8 +202,43 @@ With defaults (`MaxConcurrentJobs=5`, lease=10 min), the worst-case starvation i
|
|
|
202
202
|
|
|
203
203
|
- Raise `MaxConcurrentJobs` so healthy jobs have headroom while zombies hold slots.
|
|
204
204
|
- Shorten `LeaseTimeoutMs` to accelerate reclaim (subject to the constraint above).
|
|
205
|
+
- **Heartbeat from your plugin** to replace the fixed lease with liveness — see the next section (GH #2749).
|
|
205
206
|
- Bound `plugin.Execute()` in your job plugins — the structural cure, tracked as a follow-up.
|
|
206
207
|
|
|
208
|
+
### Heartbeat-based lease renewal (#2749)
|
|
209
|
+
|
|
210
|
+
The fixed lease is a blunt instrument: it's an absolute-clock deadline set at acquire time, blind to whether a job is actually making progress. A job that hangs at minute 1 still holds its slot until the lease expires; a healthy long job that legitimately needs longer than the lease gets reclaimed mid-flight.
|
|
211
|
+
|
|
212
|
+
The cure is **liveness**. A running plugin periodically calls `context.heartbeat()` to push its lock's `ExpectedCompletionAt` forward. A job that *stops* beating becomes reclaimable by the existing sweep shortly after its last beat — regardless of absolute clock time. The sweep itself is unchanged; heartbeating simply keeps a healthy job's `ExpectedCompletionAt` ahead of `now`.
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
async Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult> {
|
|
216
|
+
for (const batch of batches) {
|
|
217
|
+
await this.processBatch(batch);
|
|
218
|
+
// Signal forward progress. Safe to call every iteration — it self-throttles.
|
|
219
|
+
await context.heartbeat?.();
|
|
220
|
+
}
|
|
221
|
+
return { Success: true };
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**The contract:**
|
|
226
|
+
|
|
227
|
+
- **Opt-in.** A plugin that never calls `heartbeat()` keeps today's fixed acquire-time lease behavior. Nothing breaks.
|
|
228
|
+
- **Self-throttling.** Call it on every loop iteration / progress tick if you like — an effective DB write happens at most once per ~5 minutes (`HEARTBEAT_INTERVAL_MS`); the rest are cheap no-ops.
|
|
229
|
+
- **Never throws.** It swallows and logs its own errors, so `void context.heartbeat?.()` fire-and-forget is safe. A best-effort renewal must never fault the actual job.
|
|
230
|
+
- **No-op in `Concurrent` mode** — there's no lock to extend.
|
|
231
|
+
|
|
232
|
+
**Why the engine does NOT auto-heartbeat.** It would be tempting to renew the lease automatically at every `await` boundary. We deliberately don't: an auto-beat would keep renewing the lease *while a plugin is wedged in `await something()`* — masking exactly the hang we want to detect. Renewal MUST be driven by the plugin's own forward progress.
|
|
233
|
+
|
|
234
|
+
**Constants & interaction with the sweep.** Each effective beat sets `ExpectedCompletionAt = now + HEARTBEAT_LEASE_MS` (6 min — one minute larger than the 5-min throttle window, so a healthy on-schedule job never lets its lease lapse). The renewal is atomic and token-checked via `spExtendScheduledJobLease`: if another holder has already reclaimed the lease, the beat no-ops (logged as a slot handoff) rather than stomping the fresh holder's lock — the same lost-mutex protection as the release sproc.
|
|
235
|
+
|
|
236
|
+
**Operator footgun.** Heartbeating deliberately *shortens* the effective reclaim window: `HEARTBEAT_LEASE_MS` (6 min) is independent of and smaller than the default 10-min acquire-time lease. That's intended — a tighter reclaim window in exchange for liveness. If you configure a long `LeaseTimeoutMinutes` *and* the job heartbeats, the effective reclaim window collapses to ~6 min. This is not a bug.
|
|
237
|
+
|
|
238
|
+
**When to reach for `MaxRuntimeMinutes` instead.** Heartbeating requires a place to beat from — a loop, a progress callback, a per-step boundary. A job whose work is a *single long-running call* (one slow synchronous action, a long external request) has no such boundary and can't beat mid-flight. For those, set the job's `MaxRuntimeMinutes` column: it bumps the acquire-time lease to `max(default, MaxRuntimeMinutes)` (it only ever *extends* the default, never shrinks it) so the sweep doesn't reclaim the slot before the call can finish.
|
|
239
|
+
|
|
240
|
+
**Built-in driver coverage.** All three shipped drivers opt in: the Agent driver beats per agent step (via `onProgress`), the Integration Sync driver beats per sync batch, and the Action driver beats per parameter prepared plus once right before `RunAction` (a single long action still needs `MaxRuntimeMinutes` — that's the documented caveat above).
|
|
241
|
+
|
|
207
242
|
### Leaked promise behavior
|
|
208
243
|
|
|
209
244
|
When the sweep reclaims a hung job's lease:
|
|
@@ -12,6 +12,35 @@ export interface ScheduledJobExecutionContext {
|
|
|
12
12
|
Schedule: MJScheduledJobEntity;
|
|
13
13
|
Run: MJScheduledJobRunEntity;
|
|
14
14
|
ContextUser: UserInfo;
|
|
15
|
+
/**
|
|
16
|
+
* Heartbeat the running job's lease (GH #2749). Calling this signals that
|
|
17
|
+
* the plugin is still making forward progress, pushing the lock's
|
|
18
|
+
* `ExpectedCompletionAt` further into the future so the scheduling engine's
|
|
19
|
+
* sweep does not reclaim this job's concurrency slot.
|
|
20
|
+
*
|
|
21
|
+
* Contract:
|
|
22
|
+
* - **OPT-IN.** A plugin that never calls `heartbeat` falls back to today's
|
|
23
|
+
* fixed acquire-time lease behavior — nothing breaks.
|
|
24
|
+
* - **SELF-THROTTLING.** Safe to call on every loop iteration / progress
|
|
25
|
+
* tick; an effective DB write happens at most once per ~5 minutes
|
|
26
|
+
* regardless of call frequency. Cheap no-op the rest of the time.
|
|
27
|
+
* - **NEVER THROWS.** Swallows and logs its own errors. A best-effort lease
|
|
28
|
+
* renewal must never fault the actual job, so callers can fire-and-forget
|
|
29
|
+
* it (`void context.heartbeat?.()`).
|
|
30
|
+
* - **NO-OP in Concurrent mode.** When the job runs under
|
|
31
|
+
* `ConcurrencyMode='Concurrent'` there is no lock to extend, so this does
|
|
32
|
+
* nothing.
|
|
33
|
+
*
|
|
34
|
+
* The engine ALWAYS supplies this when it runs a job, so inside `Execute`
|
|
35
|
+
* plugins may call `context.heartbeat!()` directly. The `?` only covers
|
|
36
|
+
* `ScheduledJobExecutionContext` literals built by hand (e.g. unit tests).
|
|
37
|
+
*
|
|
38
|
+
* IMPORTANT: renewal MUST be driven by the plugin's own forward progress —
|
|
39
|
+
* the engine deliberately does NOT auto-heartbeat at `await` boundaries,
|
|
40
|
+
* because an auto-beat would keep renewing the lease while a plugin is
|
|
41
|
+
* wedged in `await something()`, masking exactly the hang we want to detect.
|
|
42
|
+
*/
|
|
43
|
+
heartbeat?: () => Promise<void>;
|
|
15
44
|
}
|
|
16
45
|
/**
|
|
17
46
|
* Abstract base class for scheduled job implementations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseScheduledJob.d.ts","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,gBAAgB,EAAE,QAAQ,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE3H;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,uBAAuB,CAAC;IAC7B,WAAW,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseScheduledJob.d.ts","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,gBAAgB,EAAE,QAAQ,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE3H;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,uBAAuB,CAAC;IAC7B,WAAW,EAAE,QAAQ,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8BAAsB,gBAAgB;IAClC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEpF;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,gBAAgB;IAEhF;;;;;;;;;OASG;IACH,QAAQ,CAAC,kBAAkB,CACvB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAEtB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,SAAS,yBAAyB,EAC5D,QAAQ,EAAE,oBAAoB,GAC/B,CAAC;IAaJ;;;;;;;OAOG;cACa,UAAU,CACtB,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,QAAQ,EACrB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,wBAAwB,CAAC;IAOpC;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAQlE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;CAGzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseScheduledJob.js","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAA8B,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseScheduledJob.js","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAA8B,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AA2C/I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,gBAAgB;IA0ClC;;;;;;;;;;;OAWG;IACO,kBAAkB,CACxB,QAA8B;QAE9B,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAM,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,UAAU,CACtB,QAA8B,EAC9B,WAAqB,EACrB,QAA4B;QAE5B,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAiC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAA2B,yBAAyB,EAAE,WAAW,CAAC,CAAC;QAC3G,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACO,GAAG,CAAC,OAAe,EAAE,cAAuB,KAAK;QACvD,WAAW,CAAC;YACR,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;YAChD,WAAW;YACX,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB,EAAE;SACpD,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACO,QAAQ,CAAC,OAAe,EAAE,KAAW;QAC3C,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;CACJ"}
|
|
@@ -44,6 +44,26 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
|
|
|
44
44
|
private highFrequencyWarnedJobIds;
|
|
45
45
|
/** Threshold (ms) below which a job's run frequency triggers a console warning. */
|
|
46
46
|
private static readonly HIGH_FREQUENCY_WARNING_THRESHOLD_MS;
|
|
47
|
+
/**
|
|
48
|
+
* Heartbeat throttle window. A `context.heartbeat()` call is a no-op until
|
|
49
|
+
* this much wall-clock has elapsed since the last EFFECTIVE beat, so a
|
|
50
|
+
* driver can call it on every loop iteration without hammering the DB.
|
|
51
|
+
*/
|
|
52
|
+
private static readonly HEARTBEAT_INTERVAL_MS;
|
|
53
|
+
/**
|
|
54
|
+
* Lease length applied on each effective beat (`now + this`). One minute
|
|
55
|
+
* larger than HEARTBEAT_INTERVAL_MS so a healthy on-schedule job never lets
|
|
56
|
+
* its lease lapse, while a job that STOPS beating is reclaimable ~1 min
|
|
57
|
+
* after the window it missed.
|
|
58
|
+
*
|
|
59
|
+
* Deliberately INDEPENDENT of `_leaseTimeoutMs`: heartbeating intentionally
|
|
60
|
+
* SHORTENS the effective reclaim window (6 min vs. the default 10 min
|
|
61
|
+
* acquire-time lease). That trade — a tighter reclaim window in exchange for
|
|
62
|
+
* plugin-driven liveness — is the entire point of #2749. Coverage is
|
|
63
|
+
* continuous: the 10-min initial lease comfortably outlasts the 5-min wait
|
|
64
|
+
* to the first effective beat, which extends the lease to ~11 min, etc.
|
|
65
|
+
*/
|
|
66
|
+
private static readonly HEARTBEAT_LEASE_MS;
|
|
47
67
|
/**
|
|
48
68
|
* Maximum concurrent scheduled jobs on this engine instance. Default 5.
|
|
49
69
|
* Configurable via MJServer's `scheduledJobs.maxConcurrentJobs` config.
|
|
@@ -329,6 +349,9 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
|
|
|
329
349
|
* Operates only on lock columns; never mutates the shared entity in
|
|
330
350
|
* this.ScheduledJobs. Caller passes jobId (string), not the entity object.
|
|
331
351
|
*
|
|
352
|
+
* @param maxRuntimeMinutes - Optional per-job lease override (GH #2749). When
|
|
353
|
+
* set and positive, the initial lease is max(default, override) — so
|
|
354
|
+
* it only ever EXTENDS the acquire-time lease, never shrinks it.
|
|
332
355
|
* @returns { acquired: true, token } on success; { acquired: false } otherwise.
|
|
333
356
|
* @private
|
|
334
357
|
*/
|
|
@@ -345,6 +368,40 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
|
|
|
345
368
|
* @private
|
|
346
369
|
*/
|
|
347
370
|
private releaseLockIfTokenMatches;
|
|
371
|
+
/**
|
|
372
|
+
* Atomically extend (renew) a lock's lease via spExtendScheduledJobLease,
|
|
373
|
+
* IF AND ONLY IF the current DB token still matches expectedToken. This is
|
|
374
|
+
* the heartbeat primitive (GH #2749): a healthy job pushes its
|
|
375
|
+
* ExpectedCompletionAt forward so the sweep doesn't reclaim its slot.
|
|
376
|
+
*
|
|
377
|
+
* Token-checked like releaseLockIfTokenMatches — a stale holder whose lease
|
|
378
|
+
* was already reclaimed by a fresh holder must NOT be able to renew the
|
|
379
|
+
* fresh holder's lock (lost-mutex protection).
|
|
380
|
+
*
|
|
381
|
+
* @returns true if the lease was extended, false on token mismatch /
|
|
382
|
+
* already released.
|
|
383
|
+
* @private
|
|
384
|
+
*/
|
|
385
|
+
private extendLeaseIfTokenMatches;
|
|
386
|
+
/**
|
|
387
|
+
* Build the per-execution heartbeat closure handed to a plugin via
|
|
388
|
+
* `context.heartbeat` (GH #2749). See the TSDoc on
|
|
389
|
+
* `ScheduledJobExecutionContext.heartbeat` for the plugin-facing contract.
|
|
390
|
+
*
|
|
391
|
+
* The returned function is:
|
|
392
|
+
* - **No-op in Concurrent mode** — when lockToken is null there's no lock
|
|
393
|
+
* to extend.
|
|
394
|
+
* - **Self-throttling** — an effective beat (DB write) happens at most once
|
|
395
|
+
* per HEARTBEAT_INTERVAL_MS regardless of call frequency. lastHeartbeatMs
|
|
396
|
+
* is closed over and seeded to "now" so the first effective beat waits a
|
|
397
|
+
* full interval (the initial acquire-time lease already covers that gap).
|
|
398
|
+
* - **Best-effort, never-throws** — any error (token mismatch logged as a
|
|
399
|
+
* handoff; a thrown ExecuteSQL) is swallowed + logged. A renewal failure
|
|
400
|
+
* must never fault the actual job.
|
|
401
|
+
*
|
|
402
|
+
* @private
|
|
403
|
+
*/
|
|
404
|
+
private createHeartbeat;
|
|
348
405
|
/**
|
|
349
406
|
* Pre-flight: verify EXECUTE permission on lock sprocs. Fails LOUDLY at boot
|
|
350
407
|
* if the engine's DB principal lacks grants — much better than a silent
|
|
@@ -438,6 +495,12 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
|
|
|
438
495
|
* @private
|
|
439
496
|
*/
|
|
440
497
|
private cleanupStaleLocks;
|
|
498
|
+
/**
|
|
499
|
+
* Engine chatter (polling start/stop, lock-sproc checks, config changes, lock queueing). Verbose-only
|
|
500
|
+
* so it stays out of the default startup/run log — it honors the GLOBAL verbose flag (set from the
|
|
501
|
+
* server's configured level). Actual job RUNS (▶️ start / ✅ complete) use console.log and always show;
|
|
502
|
+
* failures go through logError and always show.
|
|
503
|
+
*/
|
|
441
504
|
private log;
|
|
442
505
|
private logError;
|
|
443
506
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledJobEngine.d.ts","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,QAAQ,EAER,iBAAiB,EAOpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,aAAa,EAAwB,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAK9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACjE;;OAEG;IACH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED;;OAEG;IACH,SAAS,KAAK,IAAI,IAAI,oBAAoB,CAEzC;IAED,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAkB;IAExC,4EAA4E;IAC5E,OAAO,CAAC,yBAAyB,CAA0B;IAE3D,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mCAAmC,CAAiB;
|
|
1
|
+
{"version":3,"file":"ScheduledJobEngine.d.ts","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,6 +101,30 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
101
101
|
/** Threshold (ms) below which a job's run frequency triggers a console warning. */
|
|
102
102
|
static { this.HIGH_FREQUENCY_WARNING_THRESHOLD_MS = 5 * 60 * 1000; }
|
|
103
103
|
// ========================================================================
|
|
104
|
+
// HEARTBEAT LEASE RENEWAL (added in v5.39 — see
|
|
105
|
+
// plans/scheduled-job-engine-heartbeat-lease.md, GH #2749)
|
|
106
|
+
// ========================================================================
|
|
107
|
+
/**
|
|
108
|
+
* Heartbeat throttle window. A `context.heartbeat()` call is a no-op until
|
|
109
|
+
* this much wall-clock has elapsed since the last EFFECTIVE beat, so a
|
|
110
|
+
* driver can call it on every loop iteration without hammering the DB.
|
|
111
|
+
*/
|
|
112
|
+
static { this.HEARTBEAT_INTERVAL_MS = 5 * 60 * 1000; }
|
|
113
|
+
/**
|
|
114
|
+
* Lease length applied on each effective beat (`now + this`). One minute
|
|
115
|
+
* larger than HEARTBEAT_INTERVAL_MS so a healthy on-schedule job never lets
|
|
116
|
+
* its lease lapse, while a job that STOPS beating is reclaimable ~1 min
|
|
117
|
+
* after the window it missed.
|
|
118
|
+
*
|
|
119
|
+
* Deliberately INDEPENDENT of `_leaseTimeoutMs`: heartbeating intentionally
|
|
120
|
+
* SHORTENS the effective reclaim window (6 min vs. the default 10 min
|
|
121
|
+
* acquire-time lease). That trade — a tighter reclaim window in exchange for
|
|
122
|
+
* plugin-driven liveness — is the entire point of #2749. Coverage is
|
|
123
|
+
* continuous: the 10-min initial lease comfortably outlasts the 5-min wait
|
|
124
|
+
* to the first effective beat, which extends the lease to ~11 min, etc.
|
|
125
|
+
*/
|
|
126
|
+
static { this.HEARTBEAT_LEASE_MS = 6 * 60 * 1000; }
|
|
127
|
+
// ========================================================================
|
|
104
128
|
// DELEGATED METADATA PROPERTIES AND METHODS
|
|
105
129
|
// ========================================================================
|
|
106
130
|
/** Gets all scheduled job types. */
|
|
@@ -132,7 +156,11 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
132
156
|
}
|
|
133
157
|
const old = this._maxConcurrentJobs;
|
|
134
158
|
this._maxConcurrentJobs = value;
|
|
135
|
-
|
|
159
|
+
// Only log a genuine change — a no-op set (old === new, e.g. applying the
|
|
160
|
+
// schema default at startup) logs nothing.
|
|
161
|
+
if (old !== value) {
|
|
162
|
+
this.log(`MaxConcurrentJobs changed from ${old} to ${value}`);
|
|
163
|
+
}
|
|
136
164
|
}
|
|
137
165
|
/**
|
|
138
166
|
* Lock lease duration in milliseconds. Default 600000 (10 minutes).
|
|
@@ -148,7 +176,10 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
148
176
|
}
|
|
149
177
|
const old = this._leaseTimeoutMs;
|
|
150
178
|
this._leaseTimeoutMs = value;
|
|
151
|
-
|
|
179
|
+
// Only log a genuine change — a no-op set (old === new) logs nothing.
|
|
180
|
+
if (old !== value) {
|
|
181
|
+
this.log(`LeaseTimeoutMs changed from ${old} to ${value}`);
|
|
182
|
+
}
|
|
152
183
|
}
|
|
153
184
|
/**
|
|
154
185
|
* Convenience accessor — lease duration as integer minutes. Production
|
|
@@ -249,9 +280,14 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
249
280
|
try {
|
|
250
281
|
const result = await this.DispatchScheduledJobs(contextUser);
|
|
251
282
|
if (result.swept > 0 || result.dispatched > 0 || result.lockedOut > 0 || result.skippedAtCapacity > 0) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
283
|
+
// Per-tick dispatch bookkeeping — verbose-only. The actual job runs are shown by the
|
|
284
|
+
// always-on ▶️ Starting / ✅ Completed lines; this batch summary is just internal detail.
|
|
285
|
+
LogStatusEx({
|
|
286
|
+
message: `📅 Scheduled Jobs: swept=${result.swept}, dispatched=${result.dispatched}, ` +
|
|
287
|
+
`lockedOut=${result.lockedOut}, skippedAtCapacity=${result.skippedAtCapacity}, ` +
|
|
288
|
+
`inflight=${this.inflightJobPromises.size}/${this.MaxConcurrentJobs}`,
|
|
289
|
+
verboseOnly: true,
|
|
290
|
+
});
|
|
255
291
|
}
|
|
256
292
|
}
|
|
257
293
|
catch (error) {
|
|
@@ -441,7 +477,7 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
441
477
|
if (this.isJobDue(job, evalTime)) {
|
|
442
478
|
console.log(` ✓ Job is due, attempting to acquire lock...`);
|
|
443
479
|
try {
|
|
444
|
-
const lockResult = await this.tryAcquireLock(job.ID);
|
|
480
|
+
const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
|
|
445
481
|
if (!lockResult.acquired) {
|
|
446
482
|
if (job.ConcurrencyMode === 'Queue') {
|
|
447
483
|
this.log(`Job ${job.Name} is locked, queueing (ConcurrencyMode=Queue)`);
|
|
@@ -491,7 +527,7 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
491
527
|
if (!job) {
|
|
492
528
|
throw new Error(`Scheduled job ${jobId} not found or not active`);
|
|
493
529
|
}
|
|
494
|
-
const lockResult = await this.tryAcquireLock(job.ID);
|
|
530
|
+
const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
|
|
495
531
|
if (!lockResult.acquired) {
|
|
496
532
|
throw new Error(`Could not acquire lock for job ${jobId} — held by another holder`);
|
|
497
533
|
}
|
|
@@ -549,7 +585,7 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
549
585
|
skippedAtCapacity++;
|
|
550
586
|
continue;
|
|
551
587
|
}
|
|
552
|
-
const lockResult = await this.tryAcquireLock(job.ID);
|
|
588
|
+
const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
|
|
553
589
|
if (!lockResult.acquired) {
|
|
554
590
|
if (job.ConcurrencyMode === 'Queue') {
|
|
555
591
|
await this.createQueuedJobRun(job, contextUser);
|
|
@@ -645,11 +681,18 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
645
681
|
}
|
|
646
682
|
// Console log job start
|
|
647
683
|
console.log(` ▶️ Starting: ${job.Name}`);
|
|
684
|
+
// Build the opt-in, self-throttling heartbeat closure (GH #2749).
|
|
685
|
+
// Captures lockToken and a per-execution lastHeartbeatMs. A plugin
|
|
686
|
+
// that makes forward progress calls context.heartbeat() to push its
|
|
687
|
+
// lease forward; a hung plugin stops beating and the existing sweep
|
|
688
|
+
// reclaims its slot. See plans/scheduled-job-engine-heartbeat-lease.md.
|
|
689
|
+
const heartbeat = this.createHeartbeat(job.ID, lockToken);
|
|
648
690
|
// Build execution context
|
|
649
691
|
const context = {
|
|
650
692
|
Schedule: job,
|
|
651
693
|
Run: run,
|
|
652
|
-
ContextUser: contextUser
|
|
694
|
+
ContextUser: contextUser,
|
|
695
|
+
heartbeat
|
|
653
696
|
};
|
|
654
697
|
// Execute the job via plugin
|
|
655
698
|
const result = await plugin.Execute(context);
|
|
@@ -839,16 +882,25 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
839
882
|
* Operates only on lock columns; never mutates the shared entity in
|
|
840
883
|
* this.ScheduledJobs. Caller passes jobId (string), not the entity object.
|
|
841
884
|
*
|
|
885
|
+
* @param maxRuntimeMinutes - Optional per-job lease override (GH #2749). When
|
|
886
|
+
* set and positive, the initial lease is max(default, override) — so
|
|
887
|
+
* it only ever EXTENDS the acquire-time lease, never shrinks it.
|
|
842
888
|
* @returns { acquired: true, token } on success; { acquired: false } otherwise.
|
|
843
889
|
* @private
|
|
844
890
|
*/
|
|
845
|
-
async tryAcquireLock(jobId) {
|
|
891
|
+
async tryAcquireLock(jobId, maxRuntimeMinutes) {
|
|
846
892
|
// uuidv4 (cryptographic) — Math.random()-based GUIDs would risk collision
|
|
847
893
|
// between concurrent engine instances and break the lost-mutex protection
|
|
848
894
|
// that releaseLockIfTokenMatches relies on (token identity = execution identity).
|
|
849
895
|
const token = uuidv4();
|
|
850
896
|
const instance = this.getInstanceIdentifier();
|
|
851
|
-
|
|
897
|
+
// MaxRuntimeMinutes only EXTENDS the default lease, never shrinks it —
|
|
898
|
+
// a per-job override below the default would just weaken protection.
|
|
899
|
+
const overrideMs = maxRuntimeMinutes != null && maxRuntimeMinutes > 0
|
|
900
|
+
? maxRuntimeMinutes * 60_000
|
|
901
|
+
: 0;
|
|
902
|
+
const leaseMs = Math.max(this._leaseTimeoutMs, overrideMs);
|
|
903
|
+
const expectedCompletion = new Date(Date.now() + leaseMs);
|
|
852
904
|
const provider = this.Base.ProviderToUse;
|
|
853
905
|
// MJ pattern: positional parameter array. The placeholder + call-wrapper
|
|
854
906
|
// syntax differs per platform — SQL Server binds the sproc's params by
|
|
@@ -884,6 +936,79 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
884
936
|
}
|
|
885
937
|
return released;
|
|
886
938
|
}
|
|
939
|
+
/**
|
|
940
|
+
* Atomically extend (renew) a lock's lease via spExtendScheduledJobLease,
|
|
941
|
+
* IF AND ONLY IF the current DB token still matches expectedToken. This is
|
|
942
|
+
* the heartbeat primitive (GH #2749): a healthy job pushes its
|
|
943
|
+
* ExpectedCompletionAt forward so the sweep doesn't reclaim its slot.
|
|
944
|
+
*
|
|
945
|
+
* Token-checked like releaseLockIfTokenMatches — a stale holder whose lease
|
|
946
|
+
* was already reclaimed by a fresh holder must NOT be able to renew the
|
|
947
|
+
* fresh holder's lock (lost-mutex protection).
|
|
948
|
+
*
|
|
949
|
+
* @returns true if the lease was extended, false on token mismatch /
|
|
950
|
+
* already released.
|
|
951
|
+
* @private
|
|
952
|
+
*/
|
|
953
|
+
async extendLeaseIfTokenMatches(jobId, expectedToken, newExpectedCompletionAt) {
|
|
954
|
+
const provider = this.Base.ProviderToUse;
|
|
955
|
+
// MJ pattern: positional parameter array. buildLockSprocCall picks the
|
|
956
|
+
// dialect-correct call wrapper (EXEC on SQL Server, SELECT * FROM fn() on
|
|
957
|
+
// PostgreSQL) — the previous hardcoded `EXEC [schema].[…]` form crashed on
|
|
958
|
+
// PG. The SAME value array serves both. See tryAcquireLock for rationale.
|
|
959
|
+
const rows = await provider.ExecuteSQL(this.buildLockSprocCall(provider, 'spExtendScheduledJobLease', ['JobID', 'ExpectedToken', 'NewExpectedCompletionAt']), [jobId, expectedToken, newExpectedCompletionAt], { isMutation: true, description: 'spExtendScheduledJobLease' }, this.Base.ContextUser);
|
|
960
|
+
return rows?.[0]?.Extended === 1;
|
|
961
|
+
}
|
|
962
|
+
/**
|
|
963
|
+
* Build the per-execution heartbeat closure handed to a plugin via
|
|
964
|
+
* `context.heartbeat` (GH #2749). See the TSDoc on
|
|
965
|
+
* `ScheduledJobExecutionContext.heartbeat` for the plugin-facing contract.
|
|
966
|
+
*
|
|
967
|
+
* The returned function is:
|
|
968
|
+
* - **No-op in Concurrent mode** — when lockToken is null there's no lock
|
|
969
|
+
* to extend.
|
|
970
|
+
* - **Self-throttling** — an effective beat (DB write) happens at most once
|
|
971
|
+
* per HEARTBEAT_INTERVAL_MS regardless of call frequency. lastHeartbeatMs
|
|
972
|
+
* is closed over and seeded to "now" so the first effective beat waits a
|
|
973
|
+
* full interval (the initial acquire-time lease already covers that gap).
|
|
974
|
+
* - **Best-effort, never-throws** — any error (token mismatch logged as a
|
|
975
|
+
* handoff; a thrown ExecuteSQL) is swallowed + logged. A renewal failure
|
|
976
|
+
* must never fault the actual job.
|
|
977
|
+
*
|
|
978
|
+
* @private
|
|
979
|
+
*/
|
|
980
|
+
createHeartbeat(jobId, lockToken) {
|
|
981
|
+
// Concurrent mode (no lock): hand back a cheap no-op so plugins can call
|
|
982
|
+
// context.heartbeat() unconditionally without special-casing.
|
|
983
|
+
if (!lockToken) {
|
|
984
|
+
return async () => { };
|
|
985
|
+
}
|
|
986
|
+
let lastHeartbeatMs = Date.now();
|
|
987
|
+
return async () => {
|
|
988
|
+
try {
|
|
989
|
+
const now = Date.now();
|
|
990
|
+
if (now - lastHeartbeatMs < SchedulingEngine.HEARTBEAT_INTERVAL_MS) {
|
|
991
|
+
return; // throttled — not yet time for an effective beat
|
|
992
|
+
}
|
|
993
|
+
lastHeartbeatMs = now;
|
|
994
|
+
const newExpected = new Date(now + SchedulingEngine.HEARTBEAT_LEASE_MS);
|
|
995
|
+
const extended = await this.extendLeaseIfTokenMatches(jobId, lockToken, newExpected);
|
|
996
|
+
if (!extended) {
|
|
997
|
+
// Token mismatch — our lease was reclaimed and the slot handed
|
|
998
|
+
// off. The plugin keeps running (we can't abort it here), but
|
|
999
|
+
// its concurrency slot now belongs to another holder; the
|
|
1000
|
+
// end-of-run release will likewise no-op. Don't throw.
|
|
1001
|
+
this.log(`[heartbeat] Lease for job ${jobId.substring(0, 8)} was NOT extended ` +
|
|
1002
|
+
`(token mismatch — slot reclaimed by another holder). Plugin continues ` +
|
|
1003
|
+
`but its slot has been handed off.`);
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
catch (error) {
|
|
1007
|
+
// Best-effort renewal must never fault the job.
|
|
1008
|
+
this.logError(`[heartbeat] Lease renewal failed for job ${jobId.substring(0, 8)} (non-fatal)`, error);
|
|
1009
|
+
}
|
|
1010
|
+
};
|
|
1011
|
+
}
|
|
887
1012
|
/**
|
|
888
1013
|
* Pre-flight: verify EXECUTE permission on lock sprocs. Fails LOUDLY at boot
|
|
889
1014
|
* if the engine's DB principal lacks grants — much better than a silent
|
|
@@ -963,6 +1088,10 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
963
1088
|
ExtraFilter: `ID IN (${idList}) AND (LockToken IS NULL OR ExpectedCompletionAt IS NULL OR ExpectedCompletionAt < '${nowIso}')`,
|
|
964
1089
|
Fields: ['ID', 'Name', 'ExpectedCompletionAt'],
|
|
965
1090
|
ResultType: 'simple',
|
|
1091
|
+
// Deliberately a fresh, narrowly-filtered read of LIVE lock/lease state — the cached
|
|
1092
|
+
// SchedulingEngineBase copy would be stale (and possibly cross-process stale). Exempt it
|
|
1093
|
+
// from the "Entity Already in Engine" optimization analyzer rather than have it flagged.
|
|
1094
|
+
Telemetry: { Exempt: true, Reason: 'Live lock-state read for hung-job sweep; engine cache would be stale' },
|
|
966
1095
|
}, contextUser);
|
|
967
1096
|
if (!result.Success || result.Results.length === 0)
|
|
968
1097
|
return 0;
|
|
@@ -1107,7 +1236,6 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
1107
1236
|
*/
|
|
1108
1237
|
async cleanupStaleLocks(_contextUser) {
|
|
1109
1238
|
const now = new Date();
|
|
1110
|
-
console.log(` 🔍 Checking for stale locks (current time: ${now.toISOString()})...`);
|
|
1111
1239
|
// Use the engine's already-loaded cache instead of round-tripping to
|
|
1112
1240
|
// the DB — this method runs in StartPolling's upfront block, IMMEDIATELY
|
|
1113
1241
|
// after Config() loads this.Base.ScheduledJobs, so the cached lock-column
|
|
@@ -1120,8 +1248,11 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
1120
1248
|
// cache's lock columns are stale (atomic sprocs bypass the entity cache).
|
|
1121
1249
|
const stale = this.Base.ScheduledJobs.filter(job => job.LockToken != null &&
|
|
1122
1250
|
(job.ExpectedCompletionAt == null || job.ExpectedCompletionAt < now));
|
|
1251
|
+
// "None found" is the common, uninteresting case — stay silent (the
|
|
1252
|
+
// "Checking…/No stale locks found" chatter was the noise). Only stale
|
|
1253
|
+
// locks that are actually FOUND/cleared are genuinely actionable and
|
|
1254
|
+
// are logged below.
|
|
1123
1255
|
if (stale.length === 0) {
|
|
1124
|
-
console.log(` ✓ No stale locks found`);
|
|
1125
1256
|
return;
|
|
1126
1257
|
}
|
|
1127
1258
|
let cleanedCount = 0;
|
|
@@ -1133,25 +1264,30 @@ export class SchedulingEngine extends BaseSingleton {
|
|
|
1133
1264
|
const lockResult = await this.tryAcquireLock(job.ID);
|
|
1134
1265
|
if (lockResult.acquired) {
|
|
1135
1266
|
await this.releaseLockIfTokenMatches(job.ID, lockResult.token);
|
|
1136
|
-
|
|
1267
|
+
this.log(`Cleared stale lock on "${job.Name}" (was held by ${job.LockedByInstance})`);
|
|
1137
1268
|
cleanedCount++;
|
|
1138
1269
|
}
|
|
1139
1270
|
else {
|
|
1140
1271
|
// Another instance acquired between our cache load and acquire.
|
|
1141
|
-
|
|
1272
|
+
this.log(`Stale lock on "${job.Name}" was cleared by another holder`);
|
|
1142
1273
|
}
|
|
1143
1274
|
}
|
|
1144
1275
|
catch (error) {
|
|
1145
1276
|
this.logError(`Failed to clean stale lock for job ${job.Name}`, error);
|
|
1146
1277
|
}
|
|
1147
1278
|
}
|
|
1148
|
-
|
|
1279
|
+
this.log(`Cleaned ${cleanedCount} stale lock(s)`);
|
|
1149
1280
|
}
|
|
1281
|
+
/**
|
|
1282
|
+
* Engine chatter (polling start/stop, lock-sproc checks, config changes, lock queueing). Verbose-only
|
|
1283
|
+
* so it stays out of the default startup/run log — it honors the GLOBAL verbose flag (set from the
|
|
1284
|
+
* server's configured level). Actual job RUNS (▶️ start / ✅ complete) use console.log and always show;
|
|
1285
|
+
* failures go through logError and always show.
|
|
1286
|
+
*/
|
|
1150
1287
|
log(message) {
|
|
1151
1288
|
LogStatusEx({
|
|
1152
1289
|
message: `[ScheduledJobEngine] ${message}`,
|
|
1153
|
-
verboseOnly:
|
|
1154
|
-
isVerboseEnabled: () => false
|
|
1290
|
+
verboseOnly: true,
|
|
1155
1291
|
});
|
|
1156
1292
|
}
|
|
1157
1293
|
logError(message, error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledJobEngine.js","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScheduledJobEngine.js","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,wBAAyB,SAAQ,gBAAgB;IAC7C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,wBAAyB,SAAQ,gBAAgB;IAC7C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA6DtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YAyBR,aAAa;YA+Cb,UAAU;CAU3B"}
|
|
@@ -42,8 +42,14 @@ let ActionScheduledJobDriver = class ActionScheduledJobDriver extends BaseSchedu
|
|
|
42
42
|
throw new Error(`Action with ID ${config.ActionID} not found`);
|
|
43
43
|
}
|
|
44
44
|
this.log(`Executing action: ${action.Name}`);
|
|
45
|
-
// Process parameters (static values or SQL queries)
|
|
46
|
-
|
|
45
|
+
// Process parameters (static values or SQL queries). Heartbeat per param
|
|
46
|
+
// so a config with several slow `SQL Statement` params keeps its lease
|
|
47
|
+
// renewed during prep (GH #2749).
|
|
48
|
+
const params = await this.processParams(config.Params || [], context.ContextUser, context.heartbeat);
|
|
49
|
+
// Beat once more right before the action runs. NOTE (documented caveat):
|
|
50
|
+
// a single long-running action cannot beat mid-call — that is precisely
|
|
51
|
+
// the ScheduledJob.MaxRuntimeMinutes use case (bump the acquire-time lease).
|
|
52
|
+
void context.heartbeat?.();
|
|
47
53
|
// Execute the action
|
|
48
54
|
const actionResult = await ActionEngineServer.Instance.RunAction({
|
|
49
55
|
Action: action,
|
|
@@ -114,13 +120,16 @@ let ActionScheduledJobDriver = class ActionScheduledJobDriver extends BaseSchedu
|
|
|
114
120
|
}
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
|
-
async processParams(params, contextUser) {
|
|
123
|
+
async processParams(params, contextUser, heartbeat) {
|
|
118
124
|
if (!params) {
|
|
119
125
|
return [];
|
|
120
126
|
}
|
|
121
127
|
const allActionParams = ActionEngineServer.Instance.ActionParams;
|
|
122
128
|
const result = [];
|
|
123
129
|
for (const param of params) {
|
|
130
|
+
// Heartbeat per param — keeps the lease renewed while preparing a
|
|
131
|
+
// config with several slow `SQL Statement` params (GH #2749).
|
|
132
|
+
void heartbeat?.();
|
|
124
133
|
const actionParam = allActionParams.find(p => UUIDsEqual(p.ID, param.ActionParamID));
|
|
125
134
|
if (!actionParam) {
|
|
126
135
|
this.logError(`Action param ${param.ActionParamID} not found`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAY,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,gBAAgB;IACnD,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAyB,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjF,kBAAkB;QAClB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhG,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,QAAQ,YAAY,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7C,
|
|
1
|
+
{"version":3,"file":"ActionScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,uBAAwB,SAAQ,gBAAgB;IAC5C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,uBAAwB,SAAQ,gBAAgB;IAC5C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA4CtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YA8BR,SAAS;CAW1B"}
|
|
@@ -39,7 +39,9 @@ let AgentScheduledJobDriver = class AgentScheduledJobDriver extends BaseSchedule
|
|
|
39
39
|
const config = this.parseConfiguration(context.Schedule);
|
|
40
40
|
// Load the agent entity
|
|
41
41
|
const agent = await this.loadAgent(config.AgentID, context.ContextUser);
|
|
42
|
-
|
|
42
|
+
// Verbose-only: the engine's always-on "▶️ Starting / ✅ Completed" pair already frames this
|
|
43
|
+
// run. This per-agent detail is redundant noise on routine (often no-op) scheduled runs.
|
|
44
|
+
this.log(`Executing agent: ${agent.Name}`, true);
|
|
43
45
|
// Execute the agent
|
|
44
46
|
const runner = new AgentRunner();
|
|
45
47
|
// Build conversation messages - if initial message provided, add it as user message
|
|
@@ -50,7 +52,12 @@ let AgentScheduledJobDriver = class AgentScheduledJobDriver extends BaseSchedule
|
|
|
50
52
|
agent: agent,
|
|
51
53
|
conversationMessages: conversationMessages,
|
|
52
54
|
payload: config.StartingPayload,
|
|
53
|
-
contextUser: context.ContextUser
|
|
55
|
+
contextUser: context.ContextUser,
|
|
56
|
+
// Heartbeat the lease on every agent step (prompt / action / sub-agent /
|
|
57
|
+
// decision) so a healthy long-running agent keeps its concurrency slot
|
|
58
|
+
// (GH #2749). Fire-and-forget is safe — context.heartbeat never throws
|
|
59
|
+
// and self-throttles to an effective beat at most every ~5 min.
|
|
60
|
+
onProgress: () => { void context.heartbeat?.(); }
|
|
54
61
|
});
|
|
55
62
|
// Link agent run back to scheduled job run
|
|
56
63
|
if (result.agentRun.ID && context.Run.ID) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAY,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAC;AAEzI,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAOxD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,gBAAgB;IAClD,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,qCAAqC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAwB,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhF,wBAAwB;QACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAExE,IAAI,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Driver for executing scheduled Integration DISCOVERY jobs (§13).
|
|
3
|
+
* @module @memberjunction/scheduling-engine
|
|
4
|
+
*/
|
|
5
|
+
import { BaseScheduledJob, ScheduledJobExecutionContext } from '../BaseScheduledJob.js';
|
|
6
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
7
|
+
import { ScheduledJobResult, NotificationContent } from '@memberjunction/scheduling-base-types';
|
|
8
|
+
/**
|
|
9
|
+
* Driver for executing scheduled Integration DISCOVERY jobs (§13).
|
|
10
|
+
*
|
|
11
|
+
* Unlike {@link IntegrationSyncScheduledJobDriver} (which moves DATA via RunSync), this driver ONLY
|
|
12
|
+
* re-discovers the connector's SCHEMA on a cron — it runs the same `IntegrationConnectorCreationPipeline`
|
|
13
|
+
* as the on-demand `IntegrationRefreshConnectorSchema` mutation (ConnectionTest → Introspect → Persist →
|
|
14
|
+
* PKClassify). Its job is to keep the `MJ: Integration Objects` / `Integration Object Fields` catalog
|
|
15
|
+
* evolving so the entity-map / field-map picker keeps offering newly-appeared tables/columns, and so
|
|
16
|
+
* objects/fields the source dropped get deactivated (reversibly) when discovery is authoritative.
|
|
17
|
+
*
|
|
18
|
+
* It NEVER materializes tables (no RSU) and NEVER syncs records — selection + create-tables remain an
|
|
19
|
+
* explicit operator action. Created/managed entirely over GraphQL via the `discovery` job-kind on
|
|
20
|
+
* `IntegrationCreateSchedule`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class IntegrationDiscoveryScheduledJobDriver extends BaseScheduledJob {
|
|
23
|
+
Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult>;
|
|
24
|
+
ValidateConfiguration(schedule: {
|
|
25
|
+
Configuration?: string;
|
|
26
|
+
}): ValidationResult;
|
|
27
|
+
FormatNotification(context: ScheduledJobExecutionContext, result: ScheduledJobResult): NotificationContent;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=IntegrationDiscoveryScheduledJobDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntegrationDiscoveryScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationDiscoveryScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAEH,gBAAgB,EAInB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAgBhG;;;;;;;;;;;;;GAaG;AACH,qBACa,sCAAuC,SAAQ,gBAAgB;IAE3D,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgEjF,qBAAqB,CAAC,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IA8B7E,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;CAkCzB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Driver for executing scheduled Integration DISCOVERY jobs (§13).
|
|
3
|
+
* @module @memberjunction/scheduling-engine
|
|
4
|
+
*/
|
|
5
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
6
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
7
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
|
+
import { BaseScheduledJob } from '../BaseScheduledJob.js';
|
|
13
|
+
import { Metadata, ValidationResult, ValidationErrorInfo, ValidationErrorType, } from '@memberjunction/core';
|
|
14
|
+
import { IntegrationEngine, ConnectorFactory, IntegrationConnectorCreationPipeline } from '@memberjunction/integration-engine';
|
|
15
|
+
/**
|
|
16
|
+
* Driver for executing scheduled Integration DISCOVERY jobs (§13).
|
|
17
|
+
*
|
|
18
|
+
* Unlike {@link IntegrationSyncScheduledJobDriver} (which moves DATA via RunSync), this driver ONLY
|
|
19
|
+
* re-discovers the connector's SCHEMA on a cron — it runs the same `IntegrationConnectorCreationPipeline`
|
|
20
|
+
* as the on-demand `IntegrationRefreshConnectorSchema` mutation (ConnectionTest → Introspect → Persist →
|
|
21
|
+
* PKClassify). Its job is to keep the `MJ: Integration Objects` / `Integration Object Fields` catalog
|
|
22
|
+
* evolving so the entity-map / field-map picker keeps offering newly-appeared tables/columns, and so
|
|
23
|
+
* objects/fields the source dropped get deactivated (reversibly) when discovery is authoritative.
|
|
24
|
+
*
|
|
25
|
+
* It NEVER materializes tables (no RSU) and NEVER syncs records — selection + create-tables remain an
|
|
26
|
+
* explicit operator action. Created/managed entirely over GraphQL via the `discovery` job-kind on
|
|
27
|
+
* `IntegrationCreateSchedule`.
|
|
28
|
+
*/
|
|
29
|
+
let IntegrationDiscoveryScheduledJobDriver = class IntegrationDiscoveryScheduledJobDriver extends BaseScheduledJob {
|
|
30
|
+
async Execute(context) {
|
|
31
|
+
const config = this.parseConfiguration(context.Schedule);
|
|
32
|
+
this.log(`Starting integration DISCOVERY refresh for CompanyIntegration: ${config.CompanyIntegrationID}`);
|
|
33
|
+
// Ensure the integration engine metadata is loaded (connector cache, etc.).
|
|
34
|
+
await IntegrationEngine.Instance.Config(false, context.ContextUser);
|
|
35
|
+
const provider = Metadata.Provider; // global-provider-ok: scheduled discovery job is a server-global task, not per-request/per-tenant
|
|
36
|
+
const ci = await provider.GetEntityObject('MJ: Company Integrations', context.ContextUser);
|
|
37
|
+
if (!(await ci.Load(config.CompanyIntegrationID))) {
|
|
38
|
+
return {
|
|
39
|
+
Success: false,
|
|
40
|
+
ErrorMessage: `CompanyIntegration "${config.CompanyIntegrationID}" not found`,
|
|
41
|
+
Details: { CompanyIntegrationID: config.CompanyIntegrationID },
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const integration = await provider.GetEntityObject('MJ: Integrations', context.ContextUser);
|
|
45
|
+
if (!(await integration.Load(ci.IntegrationID))) {
|
|
46
|
+
return {
|
|
47
|
+
Success: false,
|
|
48
|
+
ErrorMessage: `Integration "${ci.IntegrationID}" not found`,
|
|
49
|
+
Details: { CompanyIntegrationID: config.CompanyIntegrationID },
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const connector = ConnectorFactory.Resolve(integration);
|
|
53
|
+
const pipeline = new IntegrationConnectorCreationPipeline();
|
|
54
|
+
const result = await pipeline.Run({
|
|
55
|
+
Connector: connector,
|
|
56
|
+
CompanyIntegration: ci,
|
|
57
|
+
ContextUser: context.ContextUser,
|
|
58
|
+
Provider: provider,
|
|
59
|
+
UniversalPKConvention: config.UniversalPKConvention || undefined,
|
|
60
|
+
TriggerType: 'Scheduled',
|
|
61
|
+
ConsoleMirror: false,
|
|
62
|
+
// §13 — a scheduled discovery refresh is comprehensive by default: it evolves the IO/IOF catalog,
|
|
63
|
+
// deactivating absent objects/fields and reactivating reappeared ones (reversible, gated on the
|
|
64
|
+
// connector's authoritative-discovery getter). Caller can opt out per-job via Configuration.
|
|
65
|
+
DeactivateAbsent: config.DeactivateAbsent ?? true,
|
|
66
|
+
});
|
|
67
|
+
const p = result.PersistResult;
|
|
68
|
+
this.log(`Discovery refresh ${result.Success ? 'completed' : 'failed'}: ` +
|
|
69
|
+
`${p?.ObjectsCreated ?? 0} new objects, ${p?.FieldsCreated ?? 0} new fields, ` +
|
|
70
|
+
`${p?.ObjectsUpdated ?? 0} updated objects, ${p?.FieldsUpdated ?? 0} updated fields`);
|
|
71
|
+
return {
|
|
72
|
+
Success: result.Success,
|
|
73
|
+
ErrorMessage: result.FailureMessage,
|
|
74
|
+
Details: {
|
|
75
|
+
RunID: result.RunID,
|
|
76
|
+
CompanyIntegrationID: config.CompanyIntegrationID,
|
|
77
|
+
ObjectsCreated: p?.ObjectsCreated ?? 0,
|
|
78
|
+
ObjectsUpdated: p?.ObjectsUpdated ?? 0,
|
|
79
|
+
FieldsCreated: p?.FieldsCreated ?? 0,
|
|
80
|
+
FieldsUpdated: p?.FieldsUpdated ?? 0,
|
|
81
|
+
UnresolvedObjects: result.UnresolvedObjects,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
ValidateConfiguration(schedule) {
|
|
86
|
+
const result = new ValidationResult();
|
|
87
|
+
try {
|
|
88
|
+
const config = this.parseConfiguration(schedule);
|
|
89
|
+
if (!config.CompanyIntegrationID) {
|
|
90
|
+
result.Errors.push(new ValidationErrorInfo('Configuration.CompanyIntegrationID', 'CompanyIntegrationID is required', config.CompanyIntegrationID, ValidationErrorType.Failure));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const errorMessage = error instanceof Error ? error.message : 'Invalid configuration';
|
|
95
|
+
result.Errors.push(new ValidationErrorInfo('Configuration', errorMessage, schedule.Configuration, ValidationErrorType.Failure));
|
|
96
|
+
}
|
|
97
|
+
result.Success = result.Errors.length === 0;
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
FormatNotification(context, result) {
|
|
101
|
+
const details = result.Details;
|
|
102
|
+
const subject = result.Success
|
|
103
|
+
? `Scheduled Integration Discovery Completed: ${context.Schedule.Name}`
|
|
104
|
+
: `Scheduled Integration Discovery Failed: ${context.Schedule.Name}`;
|
|
105
|
+
const body = result.Success
|
|
106
|
+
? [
|
|
107
|
+
`The scheduled integration discovery "${context.Schedule.Name}" completed successfully.`,
|
|
108
|
+
'',
|
|
109
|
+
`New objects: ${details?.ObjectsCreated ?? 'N/A'}`,
|
|
110
|
+
`New fields: ${details?.FieldsCreated ?? 'N/A'}`,
|
|
111
|
+
`Updated objects: ${details?.ObjectsUpdated ?? 'N/A'}`,
|
|
112
|
+
`Updated fields: ${details?.FieldsUpdated ?? 'N/A'}`,
|
|
113
|
+
].join('\n')
|
|
114
|
+
: [
|
|
115
|
+
`The scheduled integration discovery "${context.Schedule.Name}" failed.`,
|
|
116
|
+
'',
|
|
117
|
+
`Error: ${result.ErrorMessage ?? 'Unknown error'}`,
|
|
118
|
+
].join('\n');
|
|
119
|
+
return {
|
|
120
|
+
Subject: subject,
|
|
121
|
+
Body: body,
|
|
122
|
+
Priority: result.Success ? 'Normal' : 'High',
|
|
123
|
+
Metadata: {
|
|
124
|
+
ScheduleID: context.Schedule.ID,
|
|
125
|
+
JobType: 'IntegrationDiscovery',
|
|
126
|
+
CompanyIntegrationID: details?.CompanyIntegrationID,
|
|
127
|
+
RunID: details?.RunID,
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
IntegrationDiscoveryScheduledJobDriver = __decorate([
|
|
133
|
+
RegisterClass(BaseScheduledJob, 'IntegrationDiscoveryScheduledJobDriver')
|
|
134
|
+
], IntegrationDiscoveryScheduledJobDriver);
|
|
135
|
+
export { IntegrationDiscoveryScheduledJobDriver };
|
|
136
|
+
//# sourceMappingURL=IntegrationDiscoveryScheduledJobDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntegrationDiscoveryScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationDiscoveryScheduledJobDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationSyncScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAGlG,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,iCAAkC,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"IntegrationSyncScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAGlG,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,iCAAkC,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoCjF,qBAAqB,CAAC,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IAqC7E,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAwBtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;CAW3B"}
|
|
@@ -48,8 +48,11 @@ let IntegrationSyncScheduledJobDriver = class IntegrationSyncScheduledJobDriver
|
|
|
48
48
|
ScheduledJobRunID: context.Run.ID,
|
|
49
49
|
SyncDirection: config.SyncDirection,
|
|
50
50
|
};
|
|
51
|
-
const result = await IntegrationEngine.Instance.RunSync(config.CompanyIntegrationID, context.ContextUser, 'Scheduled',
|
|
52
|
-
|
|
51
|
+
const result = await IntegrationEngine.Instance.RunSync(config.CompanyIntegrationID, context.ContextUser, 'Scheduled',
|
|
52
|
+
// Heartbeat the lease per sync batch so a healthy long-running sync
|
|
53
|
+
// keeps its concurrency slot (GH #2749). Fire-and-forget is safe —
|
|
54
|
+
// context.heartbeat never throws and self-throttles (~5 min).
|
|
55
|
+
() => { void context.heartbeat?.(); }, undefined, // onNotification
|
|
53
56
|
options);
|
|
54
57
|
this.log(`Integration sync completed: ${result.RecordsProcessed} processed, ` +
|
|
55
58
|
`${result.RecordsCreated} created, ${result.RecordsUpdated} updated, ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationSyncScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAQvE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,gBAAgB;IAE5D,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAkC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1F,IAAI,CAAC,GAAG,CAAC,qDAAqD,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAE7F,mDAAmD;QACnD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpE,MAAM,OAAO,GAA2B;YACpC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CACnD,MAAM,CAAC,oBAAoB,EAC3B,OAAO,CAAC,WAAW,EACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"IntegrationSyncScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Scheduled-job driver that runs a Record Process on its cron schedule — sibling to
|
|
3
|
+
* AgentScheduledJobDriver / ActionScheduledJobDriver. Delegates to the RecordProcessExecutor and
|
|
4
|
+
* renews the job lease via the scheduler heartbeat each batch.
|
|
5
|
+
* @module @memberjunction/scheduling-engine
|
|
6
|
+
*/
|
|
7
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
8
|
+
import { BaseScheduledJob, ScheduledJobExecutionContext } from '../BaseScheduledJob.js';
|
|
9
|
+
import { ScheduledJobResult, NotificationContent } from '@memberjunction/scheduling-base-types';
|
|
10
|
+
/**
|
|
11
|
+
* Driver for executing a scheduled Record Process.
|
|
12
|
+
*
|
|
13
|
+
* Configuration schema: `{ "RecordProcessID": "<id>" }`
|
|
14
|
+
*/
|
|
15
|
+
export declare class RecordProcessScheduledJobDriver extends BaseScheduledJob {
|
|
16
|
+
Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult>;
|
|
17
|
+
ValidateConfiguration(schedule: Parameters<RecordProcessScheduledJobDriver['parseConfiguration']>[0]): ValidationResult;
|
|
18
|
+
FormatNotification(context: ScheduledJobExecutionContext, result: ScheduledJobResult): NotificationContent;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=RecordProcessScheduledJobDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordProcessScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/RecordProcessScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAA6B,MAAM,uCAAuC,CAAC;AAO3H;;;;GAIG;AACH,qBACa,+BAAgC,SAAQ,gBAAgB;IACpD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8BjF,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB;IAwBvH,kBAAkB,CAAC,OAAO,EAAE,4BAA4B,EAAE,MAAM,EAAE,kBAAkB,GAAG,mBAAmB;CAYpH"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Scheduled-job driver that runs a Record Process on its cron schedule — sibling to
|
|
3
|
+
* AgentScheduledJobDriver / ActionScheduledJobDriver. Delegates to the RecordProcessExecutor and
|
|
4
|
+
* renews the job lease via the scheduler heartbeat each batch.
|
|
5
|
+
* @module @memberjunction/scheduling-engine
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
14
|
+
import { ValidationResult, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
|
|
15
|
+
import { RecordProcessExecutor } from '@memberjunction/record-set-processor';
|
|
16
|
+
import { BaseScheduledJob } from '../BaseScheduledJob.js';
|
|
17
|
+
/**
|
|
18
|
+
* Driver for executing a scheduled Record Process.
|
|
19
|
+
*
|
|
20
|
+
* Configuration schema: `{ "RecordProcessID": "<id>" }`
|
|
21
|
+
*/
|
|
22
|
+
let RecordProcessScheduledJobDriver = class RecordProcessScheduledJobDriver extends BaseScheduledJob {
|
|
23
|
+
async Execute(context) {
|
|
24
|
+
const config = this.parseConfiguration(context.Schedule);
|
|
25
|
+
if (!config.RecordProcessID) {
|
|
26
|
+
throw new Error('RecordProcessID is required in the scheduled job configuration');
|
|
27
|
+
}
|
|
28
|
+
void context.heartbeat?.();
|
|
29
|
+
const result = await new RecordProcessExecutor().RunByID(config.RecordProcessID, {
|
|
30
|
+
contextUser: context.ContextUser,
|
|
31
|
+
triggeredBy: 'Schedule',
|
|
32
|
+
// Link the Process Run back to this ScheduledJobRun so the scheduling UI can join them.
|
|
33
|
+
scheduledJobRunID: context.Run?.ID,
|
|
34
|
+
// Renew the lease as each batch reports progress.
|
|
35
|
+
onProgress: () => { void context.heartbeat?.(); },
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
Success: result.Status === 'Completed',
|
|
39
|
+
ErrorMessage: result.ErrorMessage,
|
|
40
|
+
Details: {
|
|
41
|
+
ProcessRunID: result.ProcessRunID,
|
|
42
|
+
Status: result.Status,
|
|
43
|
+
Processed: result.Processed,
|
|
44
|
+
SuccessCount: result.Success,
|
|
45
|
+
ErrorCount: result.Error,
|
|
46
|
+
SkippedCount: result.Skipped,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
ValidateConfiguration(schedule) {
|
|
51
|
+
const result = new ValidationResult();
|
|
52
|
+
try {
|
|
53
|
+
const config = this.parseConfiguration(schedule);
|
|
54
|
+
if (!config.RecordProcessID) {
|
|
55
|
+
result.Errors.push(new ValidationErrorInfo('Configuration.RecordProcessID', 'RecordProcessID is required', config.RecordProcessID, ValidationErrorType.Failure));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
result.Errors.push(new ValidationErrorInfo('Configuration', error instanceof Error ? error.message : 'Invalid configuration', schedule.Configuration, ValidationErrorType.Failure));
|
|
60
|
+
}
|
|
61
|
+
result.Success = result.Errors.length === 0;
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
FormatNotification(context, result) {
|
|
65
|
+
const d = result.Details;
|
|
66
|
+
return {
|
|
67
|
+
Subject: result.Success
|
|
68
|
+
? `Record Process Completed: ${context.Schedule.Name}`
|
|
69
|
+
: `Record Process Failed: ${context.Schedule.Name}`,
|
|
70
|
+
Body: result.Success
|
|
71
|
+
? `Processed ${d?.Processed ?? 0} records — ${d?.SuccessCount ?? 0} succeeded, ${d?.ErrorCount ?? 0} failed, ${d?.SkippedCount ?? 0} skipped. Run ${d?.ProcessRunID ?? ''}.`
|
|
72
|
+
: `Failed: ${result.ErrorMessage ?? 'unknown error'}`,
|
|
73
|
+
Priority: result.Success ? 'Normal' : 'High',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
RecordProcessScheduledJobDriver = __decorate([
|
|
78
|
+
RegisterClass(BaseScheduledJob, 'RecordProcessScheduledJobDriver')
|
|
79
|
+
], RecordProcessScheduledJobDriver);
|
|
80
|
+
export { RecordProcessScheduledJobDriver };
|
|
81
|
+
//# sourceMappingURL=RecordProcessScheduledJobDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordProcessScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/RecordProcessScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AAQrF;;;;GAIG;AAEI,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,gBAAgB;IAC1D,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAgC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,CAAC;QAED,KAAK,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,qBAAqB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;YAC7E,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,UAAU;YACvB,wFAAwF;YACxF,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;YAClC,kDAAkD;YAClD,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW;YACtC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE;gBACL,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,YAAY,EAAE,MAAM,CAAC,OAAO;gBAC5B,UAAU,EAAE,MAAM,CAAC,KAAK;gBACxB,YAAY,EAAE,MAAM,CAAC,OAAO;aAC/B;SACJ,CAAC;IACN,CAAC;IAEM,qBAAqB,CAAC,QAA8E;QACvG,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAgC,QAAQ,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,+BAA+B,EAC/B,6BAA6B,EAC7B,MAAM,CAAC,eAAe,EACtB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,eAAe,EACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,EAChE,QAAQ,CAAC,aAAa,EACtB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,kBAAkB,CAAC,OAAqC,EAAE,MAA0B;QACvF,MAAM,CAAC,GAAG,MAAM,CAAC,OAA8C,CAAC;QAChE,OAAO;YACH,OAAO,EAAE,MAAM,CAAC,OAAO;gBACnB,CAAC,CAAC,6BAA6B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACtD,CAAC,CAAC,0BAA0B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YACvD,IAAI,EAAE,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,IAAI,CAAC,cAAc,CAAC,EAAE,YAAY,IAAI,CAAC,eAAe,CAAC,EAAE,UAAU,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,IAAI,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,EAAE,GAAG;gBAC5K,CAAC,CAAC,WAAW,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE;YACzD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;SAC/C,CAAC;IACN,CAAC;CACJ,CAAA;AAnEY,+BAA+B;IAD3C,aAAa,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;GACtD,+BAA+B,CAmE3C"}
|
package/dist/drivers/index.d.ts
CHANGED
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
export * from './AgentScheduledJobDriver.js';
|
|
6
6
|
export * from './ActionScheduledJobDriver.js';
|
|
7
7
|
export * from './IntegrationSyncScheduledJobDriver.js';
|
|
8
|
+
export * from './IntegrationDiscoveryScheduledJobDriver.js';
|
|
8
9
|
export * from './AgentRunSweepScheduledJobDriver.js';
|
|
10
|
+
export * from './RecordProcessScheduledJobDriver.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC"}
|
package/dist/drivers/index.js
CHANGED
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
export * from './AgentScheduledJobDriver.js';
|
|
6
6
|
export * from './ActionScheduledJobDriver.js';
|
|
7
7
|
export * from './IntegrationSyncScheduledJobDriver.js';
|
|
8
|
+
export * from './IntegrationDiscoveryScheduledJobDriver.js';
|
|
8
9
|
export * from './AgentRunSweepScheduledJobDriver.js';
|
|
10
|
+
export * from './RecordProcessScheduledJobDriver.js';
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/scheduling-engine",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.42.0",
|
|
5
5
|
"description": "MemberJunction: Scheduling Engine - core engine for executing scheduled jobs with plugin architecture",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -17,17 +17,18 @@
|
|
|
17
17
|
"author": "MemberJunction.com",
|
|
18
18
|
"license": "ISC",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@memberjunction/integration-engine": "5.
|
|
21
|
-
"@memberjunction/actions": "5.
|
|
22
|
-
"@memberjunction/actions-base": "5.
|
|
23
|
-
"@memberjunction/ai-core-plus": "5.
|
|
24
|
-
"@memberjunction/ai-agents": "5.
|
|
25
|
-
"@memberjunction/core": "5.
|
|
26
|
-
"@memberjunction/core-entities": "5.
|
|
27
|
-
"@memberjunction/global": "5.
|
|
28
|
-
"@memberjunction/scheduling-base-types": "5.
|
|
29
|
-
"@memberjunction/scheduling-engine-base": "5.
|
|
30
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
20
|
+
"@memberjunction/integration-engine": "5.42.0",
|
|
21
|
+
"@memberjunction/actions": "5.42.0",
|
|
22
|
+
"@memberjunction/actions-base": "5.42.0",
|
|
23
|
+
"@memberjunction/ai-core-plus": "5.42.0",
|
|
24
|
+
"@memberjunction/ai-agents": "5.42.0",
|
|
25
|
+
"@memberjunction/core": "5.42.0",
|
|
26
|
+
"@memberjunction/core-entities": "5.42.0",
|
|
27
|
+
"@memberjunction/global": "5.42.0",
|
|
28
|
+
"@memberjunction/scheduling-base-types": "5.42.0",
|
|
29
|
+
"@memberjunction/scheduling-engine-base": "5.42.0",
|
|
30
|
+
"@memberjunction/sqlserver-dataprovider": "5.42.0",
|
|
31
|
+
"@memberjunction/record-set-processor": "5.42.0",
|
|
31
32
|
"cron-parser": "^4.9.0",
|
|
32
33
|
"uuid": "^13.0.0"
|
|
33
34
|
},
|