@adonis-agora/durable 0.41.1 → 0.43.1
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/CHANGELOG.md +44 -0
- package/dist/assets/spa/assets/index-r4U_iU3o.js +16 -0
- package/dist/assets/spa/assets/index-r4U_iU3o.js.map +1 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +10 -0
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/codec-state-store.d.ts +13 -1
- package/dist/src/codec-state-store.d.ts.map +1 -1
- package/dist/src/codec-state-store.js +32 -0
- package/dist/src/codec-state-store.js.map +1 -1
- package/dist/src/commands/worker.d.ts.map +1 -1
- package/dist/src/commands/worker.js +4 -0
- package/dist/src/commands/worker.js.map +1 -1
- package/dist/src/concurrency.d.ts +55 -0
- package/dist/src/concurrency.d.ts.map +1 -0
- package/dist/src/concurrency.js +52 -0
- package/dist/src/concurrency.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +1 -1
- package/dist/src/dashboard/index.js +1 -1
- package/dist/src/define_config.d.ts +17 -1
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/engine.d.ts +88 -1
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +187 -32
- package/dist/src/engine.js.map +1 -1
- package/dist/src/errors.d.ts +33 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +46 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +111 -0
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js +18 -1
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/protocol.d.ts.map +1 -1
- package/dist/src/protocol.js +4 -1
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/run-value-facets.d.ts +1 -1
- package/dist/src/run-value-facets.d.ts.map +1 -1
- package/dist/src/run-value-facets.js +1 -1
- package/dist/src/run-value-facets.js.map +1 -1
- package/dist/src/schedules.d.ts +172 -0
- package/dist/src/schedules.d.ts.map +1 -0
- package/dist/src/schedules.js +362 -0
- package/dist/src/schedules.js.map +1 -0
- package/dist/src/stores/lucid-schema.d.ts +1 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +21 -0
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +9 -1
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +107 -0
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-state-store.d.ts +8 -1
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +38 -0
- package/dist/src/testing/in-memory-state-store.js.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.js +101 -0
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/workflow-als.d.ts +25 -0
- package/dist/src/workflow-als.d.ts.map +1 -1
- package/dist/src/workflow-als.js +19 -0
- package/dist/src/workflow-als.js.map +1 -1
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +65 -24
- package/dist/src/workflow-ctx.js.map +1 -1
- package/dist/src/workflow-discovery.d.ts.map +1 -1
- package/dist/src/workflow-discovery.js +1 -0
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/src/workflow-ref.d.ts +9 -0
- package/dist/src/workflow-ref.d.ts.map +1 -1
- package/dist/src/workflow-ref.js.map +1 -1
- package/package.json +6 -6
- package/skills/durable-determinism/SKILL.md +26 -0
- package/dist/assets/spa/assets/index-CWAgwrAE.js +0 -16
- package/dist/assets/spa/assets/index-CWAgwrAE.js.map +0 -1
package/dist/src/engine.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type AdmissionBackend } from './admission.js';
|
|
2
|
+
import { type ConcurrencyConfig, type ConcurrencyQuota } from './concurrency.js';
|
|
2
3
|
import { type EntityConfig } from './entities.js';
|
|
3
4
|
import { type EventBatchConfig } from './event-accumulators.js';
|
|
4
|
-
import type { ControlPlane, EngineListener, GroupHealth, NamedTransport, RunDispatcher, RunFacetQuery, RunQuery, RunResult, RunStatus, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, SearchAttributes, SignalWaiter, StateStore, StepCheckpoint, StepError, StepInterceptor, Transport, UpdateResult, UpdateValidator, WorkflowCtx, WorkflowExecutor, WorkflowRun } from './interfaces.js';
|
|
5
|
+
import type { ControlPlane, EngineListener, GroupHealth, NamedTransport, RunDispatcher, RunFacetQuery, RunQuery, RunResult, RunScope, RunStatus, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, ScopedRetentionPolicy, SearchAttributes, SignalWaiter, StateStore, StepCheckpoint, StepError, StepInterceptor, Transport, UpdateResult, UpdateValidator, WorkflowCtx, WorkflowExecutor, WorkflowRun } from './interfaces.js';
|
|
5
6
|
import type { QueueConfig } from './queue.js';
|
|
6
7
|
import { type ScheduledWorkflow } from './scheduler.js';
|
|
8
|
+
import { ScheduleClient } from './schedules.js';
|
|
7
9
|
import type { NormalizedEventTrigger } from './workflow-events.js';
|
|
8
10
|
import { type WorkflowClass, type WorkflowInputOf, type WorkflowRef } from './workflow-ref.js';
|
|
9
11
|
type WorkflowFn = (ctx: WorkflowCtx, input: unknown) => Promise<unknown>;
|
|
@@ -39,6 +41,12 @@ export interface StartOptions {
|
|
|
39
41
|
* when one shared workflow is started on behalf of another package.
|
|
40
42
|
*/
|
|
41
43
|
origin?: string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* A start-time concurrency quota for this start — at most `limit` runs sharing `key` in flight;
|
|
46
|
+
* over it, `start` throws {@link ConcurrencyLimitError} and creates nothing. Overrides the
|
|
47
|
+
* workflow's registered `concurrency`. See {@link ConcurrencyQuota}.
|
|
48
|
+
*/
|
|
49
|
+
concurrency?: ConcurrencyQuota | undefined;
|
|
42
50
|
}
|
|
43
51
|
/** One row of {@link WorkflowEngine.listSchedules} — a schedule with its live control state. */
|
|
44
52
|
export interface ScheduleInfo {
|
|
@@ -236,6 +244,13 @@ export interface WorkflowEngineDeps {
|
|
|
236
244
|
* deletion (archival failure must never lose data).
|
|
237
245
|
*/
|
|
238
246
|
retention?: Partial<Record<'completed' | 'failed' | 'cancelled' | 'dead', number>> | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* Scoped retention rules, swept alongside {@link retention} by the same throttled
|
|
249
|
+
* `sweepRetention`: each deletes terminal runs in its `statuses` that match its `scope` (a tenant's
|
|
250
|
+
* `namespace`, `tags`, `workflows`, search `attributes`) once older than `maxAgeMs`. The strictest
|
|
251
|
+
* rule matching a run wins, since every rule is applied.
|
|
252
|
+
*/
|
|
253
|
+
retentionPolicies?: ScopedRetentionPolicy[] | undefined;
|
|
239
254
|
/**
|
|
240
255
|
* How long an in-flight run must sit untouched — with the stranded signature (a wake-forever
|
|
241
256
|
* suspension, or an old pending remote step whose worker heartbeat is silent) — before the
|
|
@@ -282,6 +297,12 @@ export interface WorkflowEngineDeps {
|
|
|
282
297
|
* faster pickup.
|
|
283
298
|
*/
|
|
284
299
|
blockedPollMs?: number | undefined;
|
|
300
|
+
/**
|
|
301
|
+
* Fire the PERSISTED schedules managed at runtime through {@link WorkflowEngine.schedules} on every
|
|
302
|
+
* worker tick (`durable:work` / the embedded worker). Off by default, so a deployment that never
|
|
303
|
+
* uses them doesn't need the `durable_schedules` table touched.
|
|
304
|
+
*/
|
|
305
|
+
persistedSchedules?: boolean | undefined;
|
|
285
306
|
}
|
|
286
307
|
/** Thrown by {@link WorkflowEngine.resume} when the run belongs to a different namespace. */
|
|
287
308
|
export declare class NamespaceMismatch extends Error {
|
|
@@ -307,6 +328,14 @@ export declare class WorkflowEngine {
|
|
|
307
328
|
/** Worker-pool partition stamped on created runs and used to scope the poll/resume paths.
|
|
308
329
|
* `undefined` is the OPERATOR: it scopes nothing and belongs to every namespace. */
|
|
309
330
|
private readonly namespace;
|
|
331
|
+
/**
|
|
332
|
+
* Persisted, runtime-managed schedules: create/upsert/pause/resume/delete/list/trigger them, and
|
|
333
|
+
* `tick()` fires the due ones (the worker tick does it when `persistedSchedules` is on). Needs a
|
|
334
|
+
* store that persists schedules — the Lucid and in-memory stores do. See {@link ScheduleClient}.
|
|
335
|
+
*/
|
|
336
|
+
readonly schedules: ScheduleClient;
|
|
337
|
+
/** Whether the worker tick fires {@link schedules} (the `persistedSchedules` option). */
|
|
338
|
+
readonly persistedSchedulesEnabled: boolean;
|
|
310
339
|
private readonly leaseMs;
|
|
311
340
|
private readonly maxRecoveryAttempts?;
|
|
312
341
|
private readonly reconcileMs;
|
|
@@ -320,6 +349,7 @@ export declare class WorkflowEngine {
|
|
|
320
349
|
private readonly compensationRetries;
|
|
321
350
|
private readonly compensationTimeoutMs;
|
|
322
351
|
private readonly retention;
|
|
352
|
+
private readonly retentionPolicies;
|
|
323
353
|
/** Archival hooks run (awaited, in order) before a retention eviction deletes a run. */
|
|
324
354
|
private readonly evictListeners;
|
|
325
355
|
private readonly stalledAfterMs;
|
|
@@ -471,6 +501,8 @@ export declare class WorkflowEngine {
|
|
|
471
501
|
register(name: string, version: string, fn: WorkflowFn, opts?: {
|
|
472
502
|
tags?: string[] | undefined;
|
|
473
503
|
singleton?: SingletonConfig | undefined;
|
|
504
|
+
/** Start-time concurrency quota — see {@link ConcurrencyConfig}. */
|
|
505
|
+
concurrency?: ConcurrencyConfig | undefined;
|
|
474
506
|
executionTimeout?: string | number | undefined;
|
|
475
507
|
validateInput?: ((input: unknown) => void | Promise<void>) | undefined;
|
|
476
508
|
onEvent?: string[] | undefined;
|
|
@@ -490,6 +522,7 @@ export declare class WorkflowEngine {
|
|
|
490
522
|
executor: WorkflowExecutor;
|
|
491
523
|
tags?: string[];
|
|
492
524
|
singleton?: SingletonConfig;
|
|
525
|
+
concurrency?: ConcurrencyConfig;
|
|
493
526
|
executionTimeout?: string | number;
|
|
494
527
|
validateInput?: (input: unknown) => void | Promise<void>;
|
|
495
528
|
requires?: string[];
|
|
@@ -657,7 +690,61 @@ export declare class WorkflowEngine {
|
|
|
657
690
|
*/
|
|
658
691
|
sweepRetention(now?: number): Promise<number>;
|
|
659
692
|
deleteRun(runId: string): Promise<number>;
|
|
693
|
+
/**
|
|
694
|
+
* Sweep a deleted run's token-keyed buffered signals — they are not run-scoped rows, so the store's
|
|
695
|
+
* deleteRun can't cascade them. Without this every fire-and-forget child that was never joined leaks
|
|
696
|
+
* its buffered `child:<id>` completion FOREVER (one row per spawn), and a raced compensate-cancel
|
|
697
|
+
* can leave a `cancel:<id>` marker behind.
|
|
698
|
+
*/
|
|
699
|
+
private sweepRunBufferedSignals;
|
|
700
|
+
/**
|
|
701
|
+
* Hard-delete EVERY run matching `scope` — plus, by default, each one's whole child subtree — in
|
|
702
|
+
* bounded batches: the "forget this tenant" / "drop this feature's history" operation. Where
|
|
703
|
+
* {@link deleteRun} removes one tree you know the id of, this drains everything a scope selects
|
|
704
|
+
* (`{ namespace: 'acme' }`, `{ tag: 'tenant:acme' }`, `{ workflows: [...] }`, attribute predicates…)
|
|
705
|
+
* through the store API.
|
|
706
|
+
*
|
|
707
|
+
* - **Live runs** in the scope are {@link cancel cancelled} first (plain cancel, no saga undo),
|
|
708
|
+
* which tells any worker holding one to stop, then deleted. `cancelLive: false` leaves live runs
|
|
709
|
+
* (and live descendants of finished ones) alone and deletes terminal history only.
|
|
710
|
+
* - **Children** go with their root even when they don't match the scope themselves (children
|
|
711
|
+
* inherit `namespace`, not `tags`); `children: false` deletes exactly the matching runs.
|
|
712
|
+
* - Each deletion sweeps the run's token-keyed buffered signals like {@link deleteRun}, and the
|
|
713
|
+
* {@link onEvict} archival hooks are NOT called (this is an explicit purge, not retention).
|
|
714
|
+
*
|
|
715
|
+
* An EMPTY scope is rejected — it would delete every run. Returns how many runs were deleted.
|
|
716
|
+
*/
|
|
717
|
+
purgeRuns(scope: RunScope, opts?: {
|
|
718
|
+
batchSize?: number;
|
|
719
|
+
cancelLive?: boolean;
|
|
720
|
+
children?: boolean;
|
|
721
|
+
}): Promise<number>;
|
|
722
|
+
/**
|
|
723
|
+
* {@link purgeRuns} for one namespace — every run (and child) a tenant/partition owns. Children
|
|
724
|
+
* inherit their parent's namespace, so a namespace purge is complete by construction.
|
|
725
|
+
*/
|
|
726
|
+
purgeNamespace(namespace: string, opts?: {
|
|
727
|
+
batchSize?: number;
|
|
728
|
+
cancelLive?: boolean;
|
|
729
|
+
}): Promise<number>;
|
|
730
|
+
/**
|
|
731
|
+
* Re-execute a run's body (replaying its checkpoints). This is the EXPLICIT entry point: besides
|
|
732
|
+
* driving a live run, it re-drives a `failed` run — the manual retry (prefer {@link requeue}, which
|
|
733
|
+
* also resets the failure state so replay re-attempts the failed parts). Completed / cancelled /
|
|
734
|
+
* dead runs are never re-executed. The engine's own implicit wake-ups (signals, step results,
|
|
735
|
+
* timers, wait rechecks, redelivered dispatches) go through {@link resumeImplicit}, which treats
|
|
736
|
+
* `failed` as terminal too.
|
|
737
|
+
*/
|
|
660
738
|
resume(runId: string): Promise<RunResult>;
|
|
739
|
+
/**
|
|
740
|
+
* {@link resume} for every IMPLICIT wake-up — a delivered signal/child completion, a late step
|
|
741
|
+
* result, a due timer, a {@link recheckWaitSeqs} re-drive, a redelivered dispatch, a queue-slot
|
|
742
|
+
* wake. A `failed` run is terminal to these: only an explicit retry ({@link requeue} /
|
|
743
|
+
* {@link resume}) may re-drive it. Otherwise a stale waiter or a late result left behind by a
|
|
744
|
+
* failed run silently re-executes its body.
|
|
745
|
+
*/
|
|
746
|
+
private resumeImplicit;
|
|
747
|
+
private resumeRun;
|
|
661
748
|
/**
|
|
662
749
|
* Deferred re-drive after a suspended settle whose waited checkpoint(s) already settled — the
|
|
663
750
|
* delivery's own resume no-oped against this turn's still-held lease (see the WorkflowSuspended
|
package/dist/src/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/src/engine.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { InMemoryAdmissionBackend } from './admission.js';
|
|
2
2
|
import { backoffDelay, MAX_BACKOFF_MS } from './backoff.js';
|
|
3
3
|
import { instantCheckpoint, lostStepEvent, stepCheckpoint } from './checkpoints.js';
|
|
4
|
+
import { assertConcurrency, concurrencyTag, resolveConcurrency, } from './concurrency.js';
|
|
4
5
|
import { controlPlaneDescriptor, planDispatch, WorkflowBlocked, } from './dispatch-routing.js';
|
|
5
6
|
import { parseDuration } from './duration.js';
|
|
6
7
|
import { Entities } from './entities.js';
|
|
7
8
|
import { ContinueAsNew, NonDeterminismError, RemoteStepTimeout, WorkflowSuspended, } from './errors.js';
|
|
8
9
|
import { EventAccumulators } from './event-accumulators.js';
|
|
9
10
|
import { eventMatches, eventMatchOf, eventPrefix } from './events.js';
|
|
11
|
+
import { isNonEmptyRunScope, TERMINAL_RUN_STATUSES } from './interfaces.js';
|
|
10
12
|
import { asHeartbeat } from './observability-scope.js';
|
|
11
13
|
import { breakpointToken, stepId } from './protocol.js';
|
|
12
14
|
import { RemoteWorkflowExecutor } from './remote-workflow-executor.js';
|
|
13
15
|
import { scanRunValueFacets } from './run-value-facets.js';
|
|
14
16
|
import { scheduleWindow } from './scheduler.js';
|
|
17
|
+
import { ScheduleClient } from './schedules.js';
|
|
15
18
|
import { SingletonGate } from './singleton-gate.js';
|
|
16
19
|
import { sanitizeQueueToken, tenantGroup } from './tenant-group.js';
|
|
17
20
|
import { TransportPool } from './transport-pool.js';
|
|
@@ -112,6 +115,14 @@ export class WorkflowEngine {
|
|
|
112
115
|
/** Worker-pool partition stamped on created runs and used to scope the poll/resume paths.
|
|
113
116
|
* `undefined` is the OPERATOR: it scopes nothing and belongs to every namespace. */
|
|
114
117
|
namespace;
|
|
118
|
+
/**
|
|
119
|
+
* Persisted, runtime-managed schedules: create/upsert/pause/resume/delete/list/trigger them, and
|
|
120
|
+
* `tick()` fires the due ones (the worker tick does it when `persistedSchedules` is on). Needs a
|
|
121
|
+
* store that persists schedules — the Lucid and in-memory stores do. See {@link ScheduleClient}.
|
|
122
|
+
*/
|
|
123
|
+
schedules;
|
|
124
|
+
/** Whether the worker tick fires {@link schedules} (the `persistedSchedules` option). */
|
|
125
|
+
persistedSchedulesEnabled;
|
|
115
126
|
leaseMs;
|
|
116
127
|
maxRecoveryAttempts;
|
|
117
128
|
reconcileMs;
|
|
@@ -125,6 +136,7 @@ export class WorkflowEngine {
|
|
|
125
136
|
compensationRetries;
|
|
126
137
|
compensationTimeoutMs;
|
|
127
138
|
retention;
|
|
139
|
+
retentionPolicies;
|
|
128
140
|
// -Infinity so the FIRST sweep always runs (a fake/test clock may start near 0).
|
|
129
141
|
#lastRetentionSweepAt = Number.NEGATIVE_INFINITY;
|
|
130
142
|
/** Archival hooks run (awaited, in order) before a retention eviction deletes a run. */
|
|
@@ -263,6 +275,12 @@ export class WorkflowEngine {
|
|
|
263
275
|
this.compensationRetries = Math.max(1, deps.compensationRetries ?? 1);
|
|
264
276
|
this.compensationTimeoutMs = Math.max(1_000, deps.compensationTimeoutMs ?? 300_000);
|
|
265
277
|
this.retention = deps.retention;
|
|
278
|
+
this.retentionPolicies = deps.retentionPolicies ?? [];
|
|
279
|
+
this.persistedSchedulesEnabled = deps.persistedSchedules ?? false;
|
|
280
|
+
this.schedules = new ScheduleClient(this.store, {
|
|
281
|
+
start: (workflow, input, runId, opts) => this.start(workflow, input, runId, opts),
|
|
282
|
+
getRun: (runId) => this.store.getRun(runId),
|
|
283
|
+
}, { namespace: this.namespace, clock: this.clock });
|
|
266
284
|
this.stalledAfterMs = Math.max(60_000, deps.stalledAfterMs ?? 900_000);
|
|
267
285
|
this.trackStepStart = deps.trackStepStart ?? true;
|
|
268
286
|
// Default: execute the run on this instance, asynchronously, so `start` never blocks on the body.
|
|
@@ -515,6 +533,7 @@ export class WorkflowEngine {
|
|
|
515
533
|
tags: opts?.tags,
|
|
516
534
|
origin: opts?.origin,
|
|
517
535
|
singleton: opts?.singleton,
|
|
536
|
+
concurrency: opts?.concurrency,
|
|
518
537
|
executionTimeoutMs: opts?.executionTimeout != null ? parseDuration(opts.executionTimeout) : undefined,
|
|
519
538
|
validateInput: opts?.validateInput,
|
|
520
539
|
onEvent: opts?.onEvent,
|
|
@@ -547,6 +566,7 @@ export class WorkflowEngine {
|
|
|
547
566
|
},
|
|
548
567
|
tags: opts.tags,
|
|
549
568
|
singleton: opts.singleton,
|
|
569
|
+
concurrency: opts.concurrency,
|
|
550
570
|
executionTimeoutMs: opts.executionTimeout != null ? parseDuration(opts.executionTimeout) : undefined,
|
|
551
571
|
validateInput: opts.validateInput,
|
|
552
572
|
remote: { group: opts.group, executor: opts.executor },
|
|
@@ -756,12 +776,20 @@ export class WorkflowEngine {
|
|
|
756
776
|
}
|
|
757
777
|
return { runId, status: prior.status, output: prior.output, error: prior.error };
|
|
758
778
|
}
|
|
779
|
+
// Start-time concurrency quota (per-start override, else the workflow's): reject BEFORE creating
|
|
780
|
+
// anything when the key's in-flight runs already reach the limit. See {@link ConcurrencyQuota}.
|
|
781
|
+
const quota = await resolveConcurrency(opts?.concurrency, registered.concurrency, input);
|
|
782
|
+
if (quota)
|
|
783
|
+
await assertConcurrency(this.store, name, quota);
|
|
759
784
|
const now = new Date();
|
|
760
785
|
// A singleton workflow stamps a `singleton:<key>` tag so the admission gate (in execute) can find
|
|
761
|
-
// the other in-flight runs sharing the key via a tag+status query
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
:
|
|
786
|
+
// the other in-flight runs sharing the key via a tag+status query; a quota-bearing run stamps
|
|
787
|
+
// `concurrency:<key>` so the quota can count its siblings the same way.
|
|
788
|
+
const minted = [
|
|
789
|
+
...(registered.singleton ? [this.singletons.tag(registered.singleton, input)] : []),
|
|
790
|
+
...(quota ? [concurrencyTag(quota.key)] : []),
|
|
791
|
+
];
|
|
792
|
+
const tags = mergeTags(registered.tags, minted.length ? [...(opts?.tags ?? []), ...minted] : opts?.tags);
|
|
765
793
|
// Singleton back-pressure: reject a start that would grow the same-key backlog past
|
|
766
794
|
// `limit + maxQueueDepth` (no-op when no maxQueueDepth is configured).
|
|
767
795
|
if (registered.singleton) {
|
|
@@ -1006,22 +1034,39 @@ export class WorkflowEngine {
|
|
|
1006
1034
|
* parents.
|
|
1007
1035
|
*/
|
|
1008
1036
|
async sweepRetention(now = this.clock()) {
|
|
1009
|
-
if (!this.retention || this.draining)
|
|
1037
|
+
if ((!this.retention && this.retentionPolicies.length === 0) || this.draining)
|
|
1010
1038
|
return 0;
|
|
1011
1039
|
if (now - this.#lastRetentionSweepAt < 60_000)
|
|
1012
1040
|
return 0;
|
|
1013
1041
|
this.#lastRetentionSweepAt = now;
|
|
1014
1042
|
let evicted = 0;
|
|
1015
|
-
|
|
1016
|
-
|
|
1043
|
+
const passes = [];
|
|
1044
|
+
for (const status of TERMINAL_RUN_STATUSES) {
|
|
1045
|
+
const maxAgeMs = this.retention?.[status];
|
|
1017
1046
|
if (maxAgeMs == null || maxAgeMs <= 0)
|
|
1018
1047
|
continue;
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1048
|
+
passes.push({ statuses: [status], namespace: this.namespace, updatedBefore: now - maxAgeMs });
|
|
1049
|
+
}
|
|
1050
|
+
for (const policy of this.retentionPolicies) {
|
|
1051
|
+
const statuses = policy.statuses.filter((s) => TERMINAL_RUN_STATUSES.includes(s));
|
|
1052
|
+
if (statuses.length === 0 || !(policy.maxAgeMs > 0))
|
|
1053
|
+
continue;
|
|
1054
|
+
// A namespaced worker only ever prunes its own partition: a scope naming another one is not its
|
|
1055
|
+
// to sweep (the operator, `namespace: undefined`, sweeps every partition).
|
|
1056
|
+
if (this.namespace !== undefined &&
|
|
1057
|
+
policy.scope.namespace !== undefined &&
|
|
1058
|
+
policy.scope.namespace !== this.namespace) {
|
|
1059
|
+
continue;
|
|
1060
|
+
}
|
|
1061
|
+
passes.push({
|
|
1062
|
+
...policy.scope,
|
|
1063
|
+
namespace: policy.scope.namespace ?? this.namespace,
|
|
1064
|
+
statuses,
|
|
1065
|
+
updatedBefore: now - policy.maxAgeMs,
|
|
1024
1066
|
});
|
|
1067
|
+
}
|
|
1068
|
+
for (const pass of passes) {
|
|
1069
|
+
const candidates = await this.store.listRuns({ ...pass, size: 100 });
|
|
1025
1070
|
for (const run of candidates) {
|
|
1026
1071
|
try {
|
|
1027
1072
|
if (this.evictListeners.size > 0) {
|
|
@@ -1049,10 +1094,16 @@ export class WorkflowEngine {
|
|
|
1049
1094
|
deleted += await this.deleteRun(childId);
|
|
1050
1095
|
}
|
|
1051
1096
|
await this.store.deleteRun(runId);
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1097
|
+
await this.sweepRunBufferedSignals(runId);
|
|
1098
|
+
return deleted + 1;
|
|
1099
|
+
}
|
|
1100
|
+
/**
|
|
1101
|
+
* Sweep a deleted run's token-keyed buffered signals — they are not run-scoped rows, so the store's
|
|
1102
|
+
* deleteRun can't cascade them. Without this every fire-and-forget child that was never joined leaks
|
|
1103
|
+
* its buffered `child:<id>` completion FOREVER (one row per spawn), and a raced compensate-cancel
|
|
1104
|
+
* can leave a `cancel:<id>` marker behind.
|
|
1105
|
+
*/
|
|
1106
|
+
async sweepRunBufferedSignals(runId) {
|
|
1056
1107
|
for (const token of [`child:${runId}`, `cancel:${runId}`]) {
|
|
1057
1108
|
for (;;) {
|
|
1058
1109
|
const buffered = await this.store.takeBufferedSignal(token).catch(() => null);
|
|
@@ -1060,16 +1111,116 @@ export class WorkflowEngine {
|
|
|
1060
1111
|
break;
|
|
1061
1112
|
}
|
|
1062
1113
|
}
|
|
1063
|
-
return deleted + 1;
|
|
1064
1114
|
}
|
|
1065
|
-
|
|
1115
|
+
/**
|
|
1116
|
+
* Hard-delete EVERY run matching `scope` — plus, by default, each one's whole child subtree — in
|
|
1117
|
+
* bounded batches: the "forget this tenant" / "drop this feature's history" operation. Where
|
|
1118
|
+
* {@link deleteRun} removes one tree you know the id of, this drains everything a scope selects
|
|
1119
|
+
* (`{ namespace: 'acme' }`, `{ tag: 'tenant:acme' }`, `{ workflows: [...] }`, attribute predicates…)
|
|
1120
|
+
* through the store API.
|
|
1121
|
+
*
|
|
1122
|
+
* - **Live runs** in the scope are {@link cancel cancelled} first (plain cancel, no saga undo),
|
|
1123
|
+
* which tells any worker holding one to stop, then deleted. `cancelLive: false` leaves live runs
|
|
1124
|
+
* (and live descendants of finished ones) alone and deletes terminal history only.
|
|
1125
|
+
* - **Children** go with their root even when they don't match the scope themselves (children
|
|
1126
|
+
* inherit `namespace`, not `tags`); `children: false` deletes exactly the matching runs.
|
|
1127
|
+
* - Each deletion sweeps the run's token-keyed buffered signals like {@link deleteRun}, and the
|
|
1128
|
+
* {@link onEvict} archival hooks are NOT called (this is an explicit purge, not retention).
|
|
1129
|
+
*
|
|
1130
|
+
* An EMPTY scope is rejected — it would delete every run. Returns how many runs were deleted.
|
|
1131
|
+
*/
|
|
1132
|
+
async purgeRuns(scope, opts) {
|
|
1133
|
+
if (!isNonEmptyRunScope(scope)) {
|
|
1134
|
+
throw new Error('purgeRuns: refusing an empty scope (it would delete every run) — pass at least one predicate, e.g. { namespace }');
|
|
1135
|
+
}
|
|
1136
|
+
const size = Math.max(1, opts?.batchSize ?? 500);
|
|
1137
|
+
const cancelLive = opts?.cancelLive ?? true;
|
|
1138
|
+
const withChildren = opts?.children ?? true;
|
|
1139
|
+
const statuses = cancelLive ? undefined : [...TERMINAL_RUN_STATUSES];
|
|
1140
|
+
let deleted = 0;
|
|
1141
|
+
let previous = '';
|
|
1142
|
+
for (;;) {
|
|
1143
|
+
const batch = await this.store.listRuns({ ...scope, statuses, size });
|
|
1144
|
+
if (batch.length === 0)
|
|
1145
|
+
break;
|
|
1146
|
+
const fingerprint = batch.map((r) => r.id).join('\u0000');
|
|
1147
|
+
// Every listed run is deleted below, so the next page is new rows — the same page twice means
|
|
1148
|
+
// the store is not deleting; stop instead of spinning forever.
|
|
1149
|
+
if (fingerprint === previous) {
|
|
1150
|
+
throw new Error('purgeRuns: the store returned the same runs after deleting them');
|
|
1151
|
+
}
|
|
1152
|
+
previous = fingerprint;
|
|
1153
|
+
const known = new Map(batch.map((r) => [r.id, r.status]));
|
|
1154
|
+
const ids = [];
|
|
1155
|
+
const seen = new Set();
|
|
1156
|
+
const visit = async (id) => {
|
|
1157
|
+
if (seen.has(id))
|
|
1158
|
+
return;
|
|
1159
|
+
seen.add(id);
|
|
1160
|
+
if (withChildren)
|
|
1161
|
+
for (const child of await this.getRunChildren(id))
|
|
1162
|
+
await visit(child);
|
|
1163
|
+
ids.push(id); // post-order: children before their parent
|
|
1164
|
+
};
|
|
1165
|
+
for (const run of batch)
|
|
1166
|
+
await visit(run.id);
|
|
1167
|
+
for (const id of ids) {
|
|
1168
|
+
const status = known.has(id) ? known.get(id) : (await this.store.getRun(id))?.status;
|
|
1169
|
+
if (status === undefined)
|
|
1170
|
+
continue; // already gone
|
|
1171
|
+
if (!TERMINAL_RUN_STATUSES.includes(status)) {
|
|
1172
|
+
if (!cancelLive)
|
|
1173
|
+
continue;
|
|
1174
|
+
await this.cancel(id).catch(() => undefined);
|
|
1175
|
+
}
|
|
1176
|
+
await this.store.deleteRun(id);
|
|
1177
|
+
await this.sweepRunBufferedSignals(id);
|
|
1178
|
+
deleted += 1;
|
|
1179
|
+
}
|
|
1180
|
+
if (batch.length < size)
|
|
1181
|
+
break;
|
|
1182
|
+
}
|
|
1183
|
+
return deleted;
|
|
1184
|
+
}
|
|
1185
|
+
/**
|
|
1186
|
+
* {@link purgeRuns} for one namespace — every run (and child) a tenant/partition owns. Children
|
|
1187
|
+
* inherit their parent's namespace, so a namespace purge is complete by construction.
|
|
1188
|
+
*/
|
|
1189
|
+
purgeNamespace(namespace, opts) {
|
|
1190
|
+
return this.purgeRuns({ namespace }, opts);
|
|
1191
|
+
}
|
|
1192
|
+
/**
|
|
1193
|
+
* Re-execute a run's body (replaying its checkpoints). This is the EXPLICIT entry point: besides
|
|
1194
|
+
* driving a live run, it re-drives a `failed` run — the manual retry (prefer {@link requeue}, which
|
|
1195
|
+
* also resets the failure state so replay re-attempts the failed parts). Completed / cancelled /
|
|
1196
|
+
* dead runs are never re-executed. The engine's own implicit wake-ups (signals, step results,
|
|
1197
|
+
* timers, wait rechecks, redelivered dispatches) go through {@link resumeImplicit}, which treats
|
|
1198
|
+
* `failed` as terminal too.
|
|
1199
|
+
*/
|
|
1200
|
+
resume(runId) {
|
|
1201
|
+
return this.resumeRun(runId, true);
|
|
1202
|
+
}
|
|
1203
|
+
/**
|
|
1204
|
+
* {@link resume} for every IMPLICIT wake-up — a delivered signal/child completion, a late step
|
|
1205
|
+
* result, a due timer, a {@link recheckWaitSeqs} re-drive, a redelivered dispatch, a queue-slot
|
|
1206
|
+
* wake. A `failed` run is terminal to these: only an explicit retry ({@link requeue} /
|
|
1207
|
+
* {@link resume}) may re-drive it. Otherwise a stale waiter or a late result left behind by a
|
|
1208
|
+
* failed run silently re-executes its body.
|
|
1209
|
+
*/
|
|
1210
|
+
resumeImplicit(runId) {
|
|
1211
|
+
return this.resumeRun(runId, false);
|
|
1212
|
+
}
|
|
1213
|
+
async resumeRun(runId, allowFailed) {
|
|
1066
1214
|
const run = await this.store.getRun(runId);
|
|
1067
1215
|
if (!run)
|
|
1068
1216
|
throw new Error(`run ${runId} not found`);
|
|
1069
1217
|
// A definitively-finished run must not be re-executed (e.g. a worker result landing after the
|
|
1070
1218
|
// run was cancelled, or a duplicate resume) — that would replay the body and clobber the
|
|
1071
|
-
// terminal state. `failed` is
|
|
1072
|
-
if (run.status === 'cancelled' ||
|
|
1219
|
+
// terminal state. `failed` is terminal too unless this is an explicit retry (see `resume`).
|
|
1220
|
+
if (run.status === 'cancelled' ||
|
|
1221
|
+
run.status === 'completed' ||
|
|
1222
|
+
run.status === 'dead' ||
|
|
1223
|
+
(run.status === 'failed' && !allowFailed)) {
|
|
1073
1224
|
return { runId, status: run.status, output: run.output, error: run.error };
|
|
1074
1225
|
}
|
|
1075
1226
|
// Namespace guard: release the lock and bail when this run belongs to a different worker pool.
|
|
@@ -1110,7 +1261,7 @@ export class WorkflowEngine {
|
|
|
1110
1261
|
for (const seq of seqs) {
|
|
1111
1262
|
const cp = await this.store.getCheckpoint(runId, seq).catch(() => null);
|
|
1112
1263
|
if (cp && (cp.status === 'completed' || cp.status === 'failed')) {
|
|
1113
|
-
await this.
|
|
1264
|
+
await this.resumeImplicit(runId).catch(() => undefined);
|
|
1114
1265
|
return;
|
|
1115
1266
|
}
|
|
1116
1267
|
}
|
|
@@ -1402,7 +1553,7 @@ export class WorkflowEngine {
|
|
|
1402
1553
|
return null;
|
|
1403
1554
|
// resume() checks the namespace and throws NamespaceMismatch when it doesn't match (releasing the
|
|
1404
1555
|
// lease) — a foreign run leased here is simply skipped rather than run.
|
|
1405
|
-
return this.
|
|
1556
|
+
return this.resumeImplicit(runId).catch((err) => {
|
|
1406
1557
|
if (err instanceof NamespaceMismatch)
|
|
1407
1558
|
return null;
|
|
1408
1559
|
throw err;
|
|
@@ -1648,7 +1799,7 @@ export class WorkflowEngine {
|
|
|
1648
1799
|
continue;
|
|
1649
1800
|
// A per-run hook (recovery counting / dead-lettering) may settle the run terminally instead.
|
|
1650
1801
|
const settled = onLocked ? await onLocked(run) : undefined;
|
|
1651
|
-
results.push(settled ?? (await this.
|
|
1802
|
+
results.push(settled ?? (await this.resumeImplicit(run.id)));
|
|
1652
1803
|
}
|
|
1653
1804
|
};
|
|
1654
1805
|
await Promise.all(Array.from({ length: Math.min(CONCURRENCY, runs.length) }, () => worker()));
|
|
@@ -1756,7 +1907,7 @@ export class WorkflowEngine {
|
|
|
1756
1907
|
// for an ordinary (non-fan) signal/child await.
|
|
1757
1908
|
parallelGroup: waiter.parallelGroup,
|
|
1758
1909
|
}));
|
|
1759
|
-
return this.
|
|
1910
|
+
return this.resumeImplicit(waiter.runId);
|
|
1760
1911
|
}
|
|
1761
1912
|
/**
|
|
1762
1913
|
* Deliver an external signal to the run waiting on `token`, resume it with `payload`, and return
|
|
@@ -1882,9 +2033,13 @@ export class WorkflowEngine {
|
|
|
1882
2033
|
const run = await this.store.getRun(runId);
|
|
1883
2034
|
if (!run)
|
|
1884
2035
|
return null;
|
|
1885
|
-
//
|
|
1886
|
-
//
|
|
1887
|
-
|
|
2036
|
+
// Terminal runs are IMMUTABLE: cancelling one is a no-op that echoes its current state. That
|
|
2037
|
+
// covers EVERY terminal status — `failed` included (a timed-out run is persisted terminal too).
|
|
2038
|
+
// It must never rewrite the run (a `failed` run silently becoming `cancelled` loses its real
|
|
2039
|
+
// outcome) and must never reach the child cascade below: a finished parent's children can be
|
|
2040
|
+
// live, unrelated work — e.g. the next queued chat turn an agent queue already started as a
|
|
2041
|
+
// child of the turn that just failed. This also stops the cascade from looping.
|
|
2042
|
+
if (TERMINAL_RUN_STATUSES.includes(run.status)) {
|
|
1888
2043
|
return { runId, status: run.status, output: run.output, error: run.error };
|
|
1889
2044
|
}
|
|
1890
2045
|
// Compensating cancel: resume the run with a cancellation pending — replay re-registers the saga,
|
|
@@ -1914,7 +2069,7 @@ export class WorkflowEngine {
|
|
|
1914
2069
|
// loop re-snapshots each iteration). NOT a `handoffRun`: that STARTS a new run via `startCore`;
|
|
1915
2070
|
// here an EXISTING run is resumed, whose execution already self-tracks — only the pre-call gap
|
|
1916
2071
|
// needed covering. The one-microtask defer is preserved; the promise is registered synchronously.
|
|
1917
|
-
this.trackEffect(Promise.resolve().then(() => this.
|
|
2072
|
+
this.trackEffect(Promise.resolve().then(() => this.resumeImplicit(runId).then(() => this.notifyCancelled(runId))));
|
|
1918
2073
|
await this.cancelChildren(runId, opts);
|
|
1919
2074
|
return { runId, status: run.status };
|
|
1920
2075
|
}
|
|
@@ -2847,7 +3002,7 @@ export class WorkflowEngine {
|
|
|
2847
3002
|
kind: 'signal',
|
|
2848
3003
|
output: payload,
|
|
2849
3004
|
}));
|
|
2850
|
-
setTimeout(() => void this.
|
|
3005
|
+
setTimeout(() => void this.resumeImplicit(run.id).catch(() => undefined), 0);
|
|
2851
3006
|
};
|
|
2852
3007
|
const buffered = await this.store.takeBufferedSignal(cmd.signal);
|
|
2853
3008
|
if (buffered) {
|
|
@@ -2906,7 +3061,7 @@ export class WorkflowEngine {
|
|
|
2906
3061
|
}));
|
|
2907
3062
|
// Re-drive on a macrotask, AFTER this turn suspends and frees the run lock (same reorder
|
|
2908
3063
|
// as the buffered `waitSignal` delivery above).
|
|
2909
|
-
setTimeout(() => void this.
|
|
3064
|
+
setTimeout(() => void this.resumeImplicit(run.id).catch(() => undefined), 0);
|
|
2910
3065
|
};
|
|
2911
3066
|
const bufferedChild = await this.store.takeBufferedSignal(`child:${childId}`);
|
|
2912
3067
|
if (bufferedChild) {
|
|
@@ -3784,7 +3939,7 @@ export class WorkflowEngine {
|
|
|
3784
3939
|
const runId = await this.settleRemoteCheckpoint(result);
|
|
3785
3940
|
if (runId === undefined)
|
|
3786
3941
|
return;
|
|
3787
|
-
this.trackEffect(this.
|
|
3942
|
+
this.trackEffect(this.resumeImplicit(runId).catch((err) => {
|
|
3788
3943
|
console.warn(`[adonis-durable] background resume of run ${runId} failed (the run recovers on its next reconcile wake): ${err instanceof Error ? err.message : String(err)}`);
|
|
3789
3944
|
}));
|
|
3790
3945
|
}
|
|
@@ -3882,7 +4037,7 @@ export class WorkflowEngine {
|
|
|
3882
4037
|
const runIds = [...waiters];
|
|
3883
4038
|
waiters.clear();
|
|
3884
4039
|
for (const runId of runIds)
|
|
3885
|
-
void this.
|
|
4040
|
+
void this.resumeImplicit(runId).catch(() => undefined);
|
|
3886
4041
|
}
|
|
3887
4042
|
/**
|
|
3888
4043
|
* Release the flow-control slot a dispatched step held (if any). The queue comes from the
|