@rotorsoft/act 1.32.19 → 1.32.21
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 +2 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/act.d.ts +18 -21
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/internal/correlate-cycle.d.ts +18 -1
- package/dist/@types/internal/correlate-cycle.d.ts.map +1 -1
- package/dist/@types/internal/defer-timer.d.ts +15 -5
- package/dist/@types/internal/defer-timer.d.ts.map +1 -1
- package/dist/@types/internal/drain-cycle.d.ts +3 -0
- package/dist/@types/internal/drain-cycle.d.ts.map +1 -1
- package/dist/index.cjs +89 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +89 -30
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/@types/act.d.ts
CHANGED
|
@@ -904,11 +904,11 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
904
904
|
*/
|
|
905
905
|
unblock(input: string[] | StreamFilter): Promise<number>;
|
|
906
906
|
/**
|
|
907
|
-
* Atomically wipe the store and rebuild it from an
|
|
908
|
-
*
|
|
909
|
-
* `
|
|
910
|
-
*
|
|
911
|
-
*
|
|
907
|
+
* Atomically wipe the store and rebuild it from an event source. The
|
|
908
|
+
* framework owns iteration, validation, `drop_snapshots` filtering,
|
|
909
|
+
* `on_progress`, and the per-call `old → new` causation remap; the
|
|
910
|
+
* adapter's {@link Store.restore} driver supplies the transaction
|
|
911
|
+
* lifecycle and per-event insert.
|
|
912
912
|
*
|
|
913
913
|
* Throws if the adapter has no restore capability. Throws on the
|
|
914
914
|
* first invalid event (negative version, malformed `created`) with
|
|
@@ -916,33 +916,30 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
916
916
|
* the adapter means a failing restore leaves the store byte-for-byte
|
|
917
917
|
* unchanged.
|
|
918
918
|
*
|
|
919
|
-
* @param source -
|
|
920
|
-
* rather than buffered so
|
|
921
|
-
* Each event's original `id`
|
|
922
|
-
* never written through —
|
|
919
|
+
* @param source - Any {@link EventSource}: a `CsvFile` backup or
|
|
920
|
+
* another store. Read in batches rather than buffered, so
|
|
921
|
+
* multi-million-event backups don't OOM. Each event's original `id`
|
|
922
|
+
* is used as a causation lookup key but never written through —
|
|
923
|
+
* adapters renumber densely.
|
|
923
924
|
* @param opts - {@link ScanOptions}. `drop_snapshots` skips
|
|
924
925
|
* `__snapshot__` events (counted in the result); `on_progress`
|
|
925
926
|
* fires once per event.
|
|
927
|
+
* @param sink - Where the events land. Defaults to this Act's store.
|
|
926
928
|
* @returns {@link ScanResult} with `kept`, `duration_ms`, and
|
|
927
929
|
* `dropped` per-category counters.
|
|
928
930
|
*
|
|
929
|
-
* @example
|
|
931
|
+
* @example Restore a CSV backup into the connected store
|
|
930
932
|
* ```typescript
|
|
931
|
-
*
|
|
932
|
-
* for (const line of blob.split("\n").slice(1)) {
|
|
933
|
-
* const [id, name, data, stream, version, created, meta] = parse(line);
|
|
934
|
-
* yield {
|
|
935
|
-
* id: +id, name, data: JSON.parse(data), stream,
|
|
936
|
-
* version: +version, created: new Date(created),
|
|
937
|
-
* meta: JSON.parse(meta),
|
|
938
|
-
* };
|
|
939
|
-
* }
|
|
940
|
-
* }
|
|
941
|
-
* const result = await app.restore(parseCsv(csvBlob), {});
|
|
933
|
+
* const result = await app.restore(new CsvFile({ path: "./backup.csv" }));
|
|
942
934
|
* console.log(`Restored ${result.kept} events in ${result.duration_ms}ms`);
|
|
943
935
|
* await cache().clear(); // operator's responsibility
|
|
944
936
|
* ```
|
|
945
937
|
*
|
|
938
|
+
* @example Copy one store into another
|
|
939
|
+
* ```typescript
|
|
940
|
+
* await app.restore(pg, {}, sqlite);
|
|
941
|
+
* ```
|
|
942
|
+
*
|
|
946
943
|
* @see {@link Store.restore} for the underlying driver-pattern primitive.
|
|
947
944
|
*/
|
|
948
945
|
restore(source: EventSource, opts?: ScanOptions, sink?: EventSink): Promise<ScanResult>;
|
package/dist/@types/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,12 @@ export type CorrelateCycleDeps<TSchemaReg extends SchemaRegister<TActions>, TEve
|
|
|
47
47
|
* claimant, so correlate reroutes it here.
|
|
48
48
|
*/
|
|
49
49
|
declared_lanes: ReadonlySet<string>;
|
|
50
|
+
/**
|
|
51
|
+
* The lanes this worker drains, set only when `onlyLanes` leaves some
|
|
52
|
+
* declared lane out. Workers on different shards are not interchangeable,
|
|
53
|
+
* so each shard gets its own correlation lease.
|
|
54
|
+
*/
|
|
55
|
+
shard?: ReadonlyArray<string>;
|
|
50
56
|
on_init?: () => void;
|
|
51
57
|
on_init_async?: () => Promise<void>;
|
|
52
58
|
cold_start_back_scan?: number;
|
|
@@ -131,7 +137,7 @@ export declare class CorrelateCycle<TSchemaReg extends SchemaRegister<TActions>,
|
|
|
131
137
|
* module: `internal/` holds no module-level state.
|
|
132
138
|
*/
|
|
133
139
|
private readonly _reported;
|
|
134
|
-
constructor({ registry, static_targets, cd, max_subscribed_streams, declared_lanes, on_init, on_init_async, cold_start_back_scan, lease_millis, }: CorrelateCycleDeps<TSchemaReg, TEvents, TActions>);
|
|
140
|
+
constructor({ registry, static_targets, cd, max_subscribed_streams, declared_lanes, shard, on_init, on_init_async, cold_start_back_scan, lease_millis, }: CorrelateCycleDeps<TSchemaReg, TEvents, TActions>);
|
|
135
141
|
/** Last correlated event id. */
|
|
136
142
|
get checkpoint(): number;
|
|
137
143
|
/**
|
|
@@ -206,6 +212,17 @@ export declare class CorrelateCycle<TSchemaReg extends SchemaRegister<TActions>,
|
|
|
206
212
|
/** False when the pass was disarmed and returned without a store read. */
|
|
207
213
|
scanned: boolean;
|
|
208
214
|
}>;
|
|
215
|
+
/**
|
|
216
|
+
* Give each target this scan had no record of the record its row holds.
|
|
217
|
+
*
|
|
218
|
+
* A target with no record is either new or forgotten. Its row, when it
|
|
219
|
+
* has one, says what lane and priority it was subscribed at; a resolution
|
|
220
|
+
* that doesn't beat that priority carries the row's values, exactly as if
|
|
221
|
+
* the record had never been evicted. One read per target with no record,
|
|
222
|
+
* and only when more than one lane is declared: with one lane there is no
|
|
223
|
+
* lane to lose, and the store already keeps the higher priority.
|
|
224
|
+
*/
|
|
225
|
+
private _recall;
|
|
209
226
|
/**
|
|
210
227
|
* Hand the correlation lease back early.
|
|
211
228
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlate-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/correlate-cycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAEV,KAAK,EACL,QAAQ,EACR,cAAc,EACd,OAAO,
|
|
1
|
+
{"version":3,"file":"correlate-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/correlate-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
* The shared "next visit time" primitive. A `DeferTimer` holds a
|
|
6
6
|
* `stream → due-time` map and a single collapsed wake timer: it parks
|
|
7
7
|
* streams that should be re-visited later and fires one `on_wake` callback
|
|
8
|
-
* at the earliest pending due-time
|
|
9
|
-
* come due.
|
|
8
|
+
* at the earliest pending due-time.
|
|
10
9
|
*
|
|
11
10
|
* The {@link "drain-cycle".DrainController} rides it for per-reaction
|
|
12
11
|
* backoff (a retry's `next_attempt_at`) and for the `defer` outcome, which
|
|
13
12
|
* holds a stream pending without advancing the watermark or bumping `retry`.
|
|
14
13
|
* The wake runs a drain, and the drain re-schedules the timer when it ends.
|
|
14
|
+
* An entry stays until its stream is acked or blocked, re-parked, or a
|
|
15
|
+
* drain that started after it came due claims nothing ({@link prune}): a
|
|
16
|
+
* wake that lands during another drain, or a pass that reaches only some of
|
|
17
|
+
* the due streams, leaves the rest due, so the next re-schedule fires again
|
|
18
|
+
* at once.
|
|
15
19
|
*
|
|
16
20
|
* Lives in process memory, per worker — the same per-worker pacing trade-off
|
|
17
21
|
* documented for backoff. Durability comes from the data the due-time is
|
|
@@ -29,9 +33,8 @@ export declare class DeferTimer {
|
|
|
29
33
|
private _timer;
|
|
30
34
|
private readonly _on_wake;
|
|
31
35
|
/**
|
|
32
|
-
* @param on_wake - invoked once each time the earliest due-time elapses
|
|
33
|
-
*
|
|
34
|
-
* for whatever is still parked.
|
|
36
|
+
* @param on_wake - invoked once each time the earliest due-time elapses.
|
|
37
|
+
* The consumer re-schedules for whatever is still parked.
|
|
35
38
|
*/
|
|
36
39
|
constructor(on_wake: () => void);
|
|
37
40
|
/** Number of currently parked streams. */
|
|
@@ -50,6 +53,13 @@ export declare class DeferTimer {
|
|
|
50
53
|
set(stream: string, at: number): void;
|
|
51
54
|
/** Drop `stream` from the parked set (e.g. on a successful ack or block). */
|
|
52
55
|
delete(stream: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Drop every entry due at or before `before`. The drain calls it when a
|
|
58
|
+
* pass that started at `before` claimed nothing: whatever was due by then
|
|
59
|
+
* was handled elsewhere (another worker) or has no work left, so waking
|
|
60
|
+
* for it again would spin.
|
|
61
|
+
*/
|
|
62
|
+
prune(before: number): void;
|
|
53
63
|
/**
|
|
54
64
|
* (Re)schedule the wake timer at the earliest pending due-time. Idempotent
|
|
55
65
|
* — collapses many parked streams into a single timer. A no-op clears any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defer-timer.d.ts","sourceRoot":"","sources":["../../../src/internal/defer-timer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"defer-timer.d.ts","sourceRoot":"","sources":["../../../src/internal/defer-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAkBH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IAEtC;;;OAGG;IACH,YAAY,OAAO,EAAE,MAAM,IAAI,EAE9B;IAED,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,WAAW,WAAY,MAAM,KAAG,OAAO,CAGrC;IAEF;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEpC;IAED,6EAA6E;IAC7E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3B;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG1B;IAED;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI,CAuBf;IAED,+EAA+E;IAC/E,IAAI,IAAI,IAAI,CAKX;CACF"}
|
|
@@ -133,6 +133,9 @@ export declare class DrainController<TEvents extends Schemas, TActions extends S
|
|
|
133
133
|
* schedule itself is persisted in the store; this runs the drain at the
|
|
134
134
|
* earliest pending visit. A parked stream already carries its mark, so
|
|
135
135
|
* the drain alone finds it, and on an idle app nothing else would.
|
|
136
|
+
* Every drain re-aims it when it ends, and a due entry stays until a pass
|
|
137
|
+
* handles it or a pass that started after it came due claims nothing, so
|
|
138
|
+
* the wake keeps draining until every due stream is reached.
|
|
136
139
|
* `stop()` cancels the timer and a stopped drain never re-schedules it,
|
|
137
140
|
* so a wake never runs after a stop.
|
|
138
141
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drain-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/drain-cycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,YAAY,EAEZ,KAAK,EACL,MAAM,EAEN,eAAe,EACf,QAAQ,EACR,cAAc,EACd,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,OAAO,IAAI,CAC5C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,KACjC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,OAAO,IAAI,CACjD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EACpC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,KAChC,OAAO,CAAC,YAAY,CAAC,CAAC;AA4S3B;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,CAC7B,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,EACxB,UAAU,SAAS,cAAc,CAAC,QAAQ,CAAC,IACzC;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACvD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe,CAC1B,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,EACxB,UAAU,SAAS,cAAc,CAAC,QAAQ,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAO;IACrB
|
|
1
|
+
{"version":3,"file":"drain-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/drain-cycle.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -3300,13 +3300,14 @@ var CorrelateCycle = class {
|
|
|
3300
3300
|
cd,
|
|
3301
3301
|
max_subscribed_streams,
|
|
3302
3302
|
declared_lanes,
|
|
3303
|
+
shard,
|
|
3303
3304
|
on_init,
|
|
3304
3305
|
on_init_async,
|
|
3305
3306
|
cold_start_back_scan = DEFAULT_COLD_START_BACK_SCAN,
|
|
3306
3307
|
lease_millis = DEFAULT_CORRELATION_LEASE_MS
|
|
3307
3308
|
}) {
|
|
3308
3309
|
this._lease_millis = lease_millis;
|
|
3309
|
-
this._key = registry_key(registry.events);
|
|
3310
|
+
this._key = shard ? `${registry_key(registry.events)}:${[...shard].sort().join(",")}` : registry_key(registry.events);
|
|
3310
3311
|
this._dynamic_subscriptions = new LruMap(max_subscribed_streams);
|
|
3311
3312
|
this._registry = registry;
|
|
3312
3313
|
this._declared_lanes = declared_lanes;
|
|
@@ -3473,6 +3474,8 @@ var CorrelateCycle = class {
|
|
|
3473
3474
|
priority: carried.priority,
|
|
3474
3475
|
lane: carried.lane,
|
|
3475
3476
|
upgraded,
|
|
3477
|
+
missed: !recorded,
|
|
3478
|
+
handler: reaction.handler.name,
|
|
3476
3479
|
correlated_at: void 0
|
|
3477
3480
|
};
|
|
3478
3481
|
const seen_in_scan = correlated.has(resolved.target);
|
|
@@ -3491,6 +3494,7 @@ var CorrelateCycle = class {
|
|
|
3491
3494
|
entry.priority = carried.priority;
|
|
3492
3495
|
entry.lane = carried.lane;
|
|
3493
3496
|
entry.upgraded = upgraded;
|
|
3497
|
+
entry.handler = reaction.handler.name;
|
|
3494
3498
|
}
|
|
3495
3499
|
if (this._in_fetch_window(resolved.source, event.stream))
|
|
3496
3500
|
entry.correlated_at = event.id;
|
|
@@ -3504,6 +3508,7 @@ var CorrelateCycle = class {
|
|
|
3504
3508
|
// actor-less, so plaintext here would be un-gated disclosure.
|
|
3505
3509
|
{ ...query, after, with_pii: false }
|
|
3506
3510
|
);
|
|
3511
|
+
if (this._declared_lanes.size > 1) await this._recall(correlated);
|
|
3507
3512
|
const streams = [];
|
|
3508
3513
|
for (const [stream, entry] of correlated) {
|
|
3509
3514
|
if (entry.upgraded || entry.correlated_at !== void 0)
|
|
@@ -3542,6 +3547,50 @@ var CorrelateCycle = class {
|
|
|
3542
3547
|
this._armed = found === query.limit;
|
|
3543
3548
|
return { subscribed: 0, last_id, marked: 0, scanned: true };
|
|
3544
3549
|
}
|
|
3550
|
+
/**
|
|
3551
|
+
* Give each target this scan had no record of the record its row holds.
|
|
3552
|
+
*
|
|
3553
|
+
* A target with no record is either new or forgotten. Its row, when it
|
|
3554
|
+
* has one, says what lane and priority it was subscribed at; a resolution
|
|
3555
|
+
* that doesn't beat that priority carries the row's values, exactly as if
|
|
3556
|
+
* the record had never been evicted. One read per target with no record,
|
|
3557
|
+
* and only when more than one lane is declared: with one lane there is no
|
|
3558
|
+
* lane to lose, and the store already keeps the higher priority.
|
|
3559
|
+
*/
|
|
3560
|
+
async _recall(correlated) {
|
|
3561
|
+
const missed = [...correlated].filter(([, entry]) => entry.missed);
|
|
3562
|
+
await Promise.all(
|
|
3563
|
+
missed.map(async ([stream, entry]) => {
|
|
3564
|
+
let row;
|
|
3565
|
+
await store2().query_streams(
|
|
3566
|
+
(position) => {
|
|
3567
|
+
row = position;
|
|
3568
|
+
},
|
|
3569
|
+
{ stream, stream_exact: true, limit: 1 }
|
|
3570
|
+
);
|
|
3571
|
+
if (!row) return;
|
|
3572
|
+
this._dynamic_subscriptions.set(stream, {
|
|
3573
|
+
floor: row.priority,
|
|
3574
|
+
priority: row.priority,
|
|
3575
|
+
lane: row.lane
|
|
3576
|
+
});
|
|
3577
|
+
if (entry.priority > row.priority) return;
|
|
3578
|
+
const held_lane = row.lane ?? DEFAULT_LANE;
|
|
3579
|
+
const resolved_lane = entry.lane ?? DEFAULT_LANE;
|
|
3580
|
+
if (entry.priority === row.priority && held_lane !== resolved_lane)
|
|
3581
|
+
report_lane_conflict(
|
|
3582
|
+
this._reported,
|
|
3583
|
+
entry.handler,
|
|
3584
|
+
stream,
|
|
3585
|
+
held_lane,
|
|
3586
|
+
resolved_lane
|
|
3587
|
+
);
|
|
3588
|
+
entry.priority = row.priority;
|
|
3589
|
+
entry.lane = row.lane;
|
|
3590
|
+
entry.upgraded = false;
|
|
3591
|
+
})
|
|
3592
|
+
);
|
|
3593
|
+
}
|
|
3545
3594
|
/**
|
|
3546
3595
|
* Hand the correlation lease back early.
|
|
3547
3596
|
*
|
|
@@ -3701,9 +3750,8 @@ var DeferTimer = class {
|
|
|
3701
3750
|
_timer;
|
|
3702
3751
|
_on_wake;
|
|
3703
3752
|
/**
|
|
3704
|
-
* @param on_wake - invoked once each time the earliest due-time elapses
|
|
3705
|
-
*
|
|
3706
|
-
* for whatever is still parked.
|
|
3753
|
+
* @param on_wake - invoked once each time the earliest due-time elapses.
|
|
3754
|
+
* The consumer re-schedules for whatever is still parked.
|
|
3707
3755
|
*/
|
|
3708
3756
|
constructor(on_wake) {
|
|
3709
3757
|
this._on_wake = on_wake;
|
|
@@ -3733,6 +3781,16 @@ var DeferTimer = class {
|
|
|
3733
3781
|
delete(stream) {
|
|
3734
3782
|
this._due.delete(stream);
|
|
3735
3783
|
}
|
|
3784
|
+
/**
|
|
3785
|
+
* Drop every entry due at or before `before`. The drain calls it when a
|
|
3786
|
+
* pass that started at `before` claimed nothing: whatever was due by then
|
|
3787
|
+
* was handled elsewhere (another worker) or has no work left, so waking
|
|
3788
|
+
* for it again would spin.
|
|
3789
|
+
*/
|
|
3790
|
+
prune(before) {
|
|
3791
|
+
for (const [stream, at] of this._due)
|
|
3792
|
+
if (at <= before) this._due.delete(stream);
|
|
3793
|
+
}
|
|
3736
3794
|
/**
|
|
3737
3795
|
* (Re)schedule the wake timer at the earliest pending due-time. Idempotent
|
|
3738
3796
|
* — collapses many parked streams into a single timer. A no-op clears any
|
|
@@ -3755,9 +3813,6 @@ var DeferTimer = class {
|
|
|
3755
3813
|
);
|
|
3756
3814
|
this._timer = setTimeout(() => {
|
|
3757
3815
|
this._timer = void 0;
|
|
3758
|
-
const now = Date.now();
|
|
3759
|
-
for (const [stream, at] of this._due)
|
|
3760
|
-
if (at <= now) this._due.delete(stream);
|
|
3761
3816
|
this._on_wake();
|
|
3762
3817
|
}, delay);
|
|
3763
3818
|
this._timer.unref();
|
|
@@ -4526,6 +4581,9 @@ var DrainController = class {
|
|
|
4526
4581
|
* schedule itself is persisted in the store; this runs the drain at the
|
|
4527
4582
|
* earliest pending visit. A parked stream already carries its mark, so
|
|
4528
4583
|
* the drain alone finds it, and on an idle app nothing else would.
|
|
4584
|
+
* Every drain re-aims it when it ends, and a due entry stays until a pass
|
|
4585
|
+
* handles it or a pass that started after it came due claims nothing, so
|
|
4586
|
+
* the wake keeps draining until every due stream is reached.
|
|
4529
4587
|
* `stop()` cancels the timer and a stopped drain never re-schedules it,
|
|
4530
4588
|
* so a wake never runs after a stop.
|
|
4531
4589
|
*/
|
|
@@ -4623,15 +4681,16 @@ var DrainController = class {
|
|
|
4623
4681
|
const streamLimit = d.streamLimit ?? options.streamLimit ?? DEFAULT_STREAM_LIMIT;
|
|
4624
4682
|
const eventLimit = d.eventLimit ?? options.eventLimit ?? DEFAULT_EVENT_LIMIT;
|
|
4625
4683
|
const leaseMillis = d.leaseMillis ?? options.leaseMillis ?? DEFAULT_LEASE_MILLIS;
|
|
4684
|
+
if (this._deps.breaker.state(Date.now()) === "open")
|
|
4685
|
+
return EMPTY_DRAIN;
|
|
4626
4686
|
try {
|
|
4627
|
-
if (this._deps.breaker.state(Date.now()) === "open")
|
|
4628
|
-
return EMPTY_DRAIN;
|
|
4629
4687
|
this._locked = true;
|
|
4630
4688
|
this._inflight = new Promise((done) => {
|
|
4631
4689
|
this._inflight_done = done;
|
|
4632
4690
|
});
|
|
4633
4691
|
const lagging = Math.ceil(streamLimit * this._ratio);
|
|
4634
4692
|
const leading = streamLimit - lagging;
|
|
4693
|
+
const started = Date.now();
|
|
4635
4694
|
const cycle = await run_drain_cycle(this._deps, {
|
|
4636
4695
|
lagging,
|
|
4637
4696
|
leading,
|
|
@@ -4641,6 +4700,7 @@ var DrainController = class {
|
|
|
4641
4700
|
store_failing: this._deps.breaker.failing
|
|
4642
4701
|
});
|
|
4643
4702
|
if (!cycle) {
|
|
4703
|
+
this._defer.prune(started);
|
|
4644
4704
|
this._deps.breaker.passed();
|
|
4645
4705
|
this._armed = false;
|
|
4646
4706
|
return EMPTY_DRAIN;
|
|
@@ -5306,6 +5366,8 @@ var Act = class {
|
|
|
5306
5366
|
// Declared lanes (not active ones): a lane another process claims is
|
|
5307
5367
|
// still a valid destination.
|
|
5308
5368
|
declared_lanes: new Set(this._declared_lanes),
|
|
5369
|
+
// Built after the controllers, so their keys are the active lanes.
|
|
5370
|
+
shard: this._drain_controllers.size < this._declared_lanes.length ? [...this._drain_controllers.keys()] : void 0,
|
|
5309
5371
|
on_init: () => {
|
|
5310
5372
|
if (this._drain && this._reactive_events.size > 0) this._arm_all();
|
|
5311
5373
|
},
|
|
@@ -6002,11 +6064,11 @@ var Act = class {
|
|
|
6002
6064
|
});
|
|
6003
6065
|
}
|
|
6004
6066
|
/**
|
|
6005
|
-
* Atomically wipe the store and rebuild it from an
|
|
6006
|
-
*
|
|
6007
|
-
* `
|
|
6008
|
-
*
|
|
6009
|
-
*
|
|
6067
|
+
* Atomically wipe the store and rebuild it from an event source. The
|
|
6068
|
+
* framework owns iteration, validation, `drop_snapshots` filtering,
|
|
6069
|
+
* `on_progress`, and the per-call `old → new` causation remap; the
|
|
6070
|
+
* adapter's {@link Store.restore} driver supplies the transaction
|
|
6071
|
+
* lifecycle and per-event insert.
|
|
6010
6072
|
*
|
|
6011
6073
|
* Throws if the adapter has no restore capability. Throws on the
|
|
6012
6074
|
* first invalid event (negative version, malformed `created`) with
|
|
@@ -6014,33 +6076,30 @@ var Act = class {
|
|
|
6014
6076
|
* the adapter means a failing restore leaves the store byte-for-byte
|
|
6015
6077
|
* unchanged.
|
|
6016
6078
|
*
|
|
6017
|
-
* @param source -
|
|
6018
|
-
* rather than buffered so
|
|
6019
|
-
* Each event's original `id`
|
|
6020
|
-
* never written through —
|
|
6079
|
+
* @param source - Any {@link EventSource}: a `CsvFile` backup or
|
|
6080
|
+
* another store. Read in batches rather than buffered, so
|
|
6081
|
+
* multi-million-event backups don't OOM. Each event's original `id`
|
|
6082
|
+
* is used as a causation lookup key but never written through —
|
|
6083
|
+
* adapters renumber densely.
|
|
6021
6084
|
* @param opts - {@link ScanOptions}. `drop_snapshots` skips
|
|
6022
6085
|
* `__snapshot__` events (counted in the result); `on_progress`
|
|
6023
6086
|
* fires once per event.
|
|
6087
|
+
* @param sink - Where the events land. Defaults to this Act's store.
|
|
6024
6088
|
* @returns {@link ScanResult} with `kept`, `duration_ms`, and
|
|
6025
6089
|
* `dropped` per-category counters.
|
|
6026
6090
|
*
|
|
6027
|
-
* @example
|
|
6091
|
+
* @example Restore a CSV backup into the connected store
|
|
6028
6092
|
* ```typescript
|
|
6029
|
-
*
|
|
6030
|
-
* for (const line of blob.split("\n").slice(1)) {
|
|
6031
|
-
* const [id, name, data, stream, version, created, meta] = parse(line);
|
|
6032
|
-
* yield {
|
|
6033
|
-
* id: +id, name, data: JSON.parse(data), stream,
|
|
6034
|
-
* version: +version, created: new Date(created),
|
|
6035
|
-
* meta: JSON.parse(meta),
|
|
6036
|
-
* };
|
|
6037
|
-
* }
|
|
6038
|
-
* }
|
|
6039
|
-
* const result = await app.restore(parseCsv(csvBlob), {});
|
|
6093
|
+
* const result = await app.restore(new CsvFile({ path: "./backup.csv" }));
|
|
6040
6094
|
* console.log(`Restored ${result.kept} events in ${result.duration_ms}ms`);
|
|
6041
6095
|
* await cache().clear(); // operator's responsibility
|
|
6042
6096
|
* ```
|
|
6043
6097
|
*
|
|
6098
|
+
* @example Copy one store into another
|
|
6099
|
+
* ```typescript
|
|
6100
|
+
* await app.restore(pg, {}, sqlite);
|
|
6101
|
+
* ```
|
|
6102
|
+
*
|
|
6044
6103
|
* @see {@link Store.restore} for the underlying driver-pattern primitive.
|
|
6045
6104
|
*/
|
|
6046
6105
|
async restore(source, opts = {}, sink) {
|