@nodii/saga 0.7.0 → 0.9.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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/participant-worker.d.ts.map +1 -1
- package/dist/participant-worker.js +1 -2
- package/dist/participant-worker.js.map +1 -1
- package/dist/reaper.d.ts +66 -1
- package/dist/reaper.d.ts.map +1 -1
- package/dist/reaper.js +111 -0
- package/dist/reaper.js.map +1 -1
- package/dist/signal-bus/redis-stream.d.ts +19 -0
- package/dist/signal-bus/redis-stream.d.ts.map +1 -1
- package/dist/signal-bus/redis-stream.js +37 -1
- package/dist/signal-bus/redis-stream.js.map +1 -1
- package/dist/test-doubles/in-memory-state-store.d.ts.map +1 -1
- package/dist/test-doubles/in-memory-state-store.js +2 -1
- package/dist/test-doubles/in-memory-state-store.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -11,9 +11,9 @@ export { sagaContext } from "./interceptor";
|
|
|
11
11
|
export { createSagaAdminServer, defaultSagaAdminAuthorizer, } from "./admin-service";
|
|
12
12
|
export type { AdminAuthFields, CancelSagaRequest, ForceCompensateRequest, GetSagaRequest, ListSagasRequest, MarkManuallyCompensatedRequest, RetryStepRequest, SagaAdminServer, SkipStepRequest, WriteRpcRequest, } from "./admin-service";
|
|
13
13
|
export { PostgresSagaStateStore, type PostgresSagaStateStoreOpts, } from "./state-store/postgres";
|
|
14
|
-
export { RedisSignalBus, type RedisSignalBusOpts, } from "./signal-bus/redis-stream";
|
|
14
|
+
export { DEFAULT_SIGNAL_STREAM_MAXLEN, RedisSignalBus, type RedisSignalBusOpts, } from "./signal-bus/redis-stream";
|
|
15
15
|
export { beginAsyncStep, completeAsyncStep, getCompletedAsyncOutput, SagaPausedSentinel, } from "./async-step";
|
|
16
|
-
export { startSagaReaper } from "./reaper";
|
|
16
|
+
export { DEFAULT_REAPER_LEASE_SCOPE, DEFAULT_REAPER_LEASE_TTL_MS, startSagaReaper, } from "./reaper";
|
|
17
17
|
export type { SagaReaperOpts, SagaReaperHandle } from "./reaper";
|
|
18
18
|
export { createParticipantWorker, ParticipantOutboxTableInvalid, ParticipantWorkerStarted, } from "./participant-worker";
|
|
19
19
|
export type { CreateParticipantWorkerOpts, ParticipantBeginEvent, ParticipantHandler, ParticipantHandlerCtx, ParticipantSqlClient, ParticipantSqlTx, ParticipantWorkerHandle, } from "./participant-worker";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,8BAA8B,EAC9B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,8BAA8B,EAC9B,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjE,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EAEtB,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,10 +24,10 @@ export { sagaContext } from "./interceptor";
|
|
|
24
24
|
export { createSagaAdminServer, defaultSagaAdminAuthorizer, } from "./admin-service";
|
|
25
25
|
// Production-bound state-store + signal-bus.
|
|
26
26
|
export { PostgresSagaStateStore, } from "./state-store/postgres";
|
|
27
|
-
export { RedisSignalBus, } from "./signal-bus/redis-stream";
|
|
27
|
+
export { DEFAULT_SIGNAL_STREAM_MAXLEN, RedisSignalBus, } from "./signal-bus/redis-stream";
|
|
28
28
|
// Pattern 2 async-step + reaper.
|
|
29
29
|
export { beginAsyncStep, completeAsyncStep, getCompletedAsyncOutput, SagaPausedSentinel, } from "./async-step";
|
|
30
|
-
export { startSagaReaper } from "./reaper";
|
|
30
|
+
export { DEFAULT_REAPER_LEASE_SCOPE, DEFAULT_REAPER_LEASE_TTL_MS, startSagaReaper, } from "./reaper";
|
|
31
31
|
// Pattern 2 participant-worker (consumer-side helper).
|
|
32
32
|
export { createParticipantWorker, ParticipantOutboxTableInvalid, ParticipantWorkerStarted, } from "./participant-worker";
|
|
33
33
|
// Migrations.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,mEAAmE;AACnE,6CAA6C;AAC7C,EAAE;AACF,2CAA2C;AAC3C,uEAAuE;AACvE,+EAA+E;AAC/E,sDAAsD;AACtD,mCAAmC;AACnC,0EAA0E;AAC1E,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAczB,6CAA6C;AAC7C,OAAO,EACL,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,GAEf,MAAM,2BAA2B,CAAC;AAEnC,iCAAiC;AACjC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,mEAAmE;AACnE,6CAA6C;AAC7C,EAAE;AACF,2CAA2C;AAC3C,uEAAuE;AACvE,+EAA+E;AAC/E,sDAAsD;AACtD,mCAAmC;AACnC,0EAA0E;AAC1E,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAczB,6CAA6C;AAC7C,OAAO,EACL,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,cAAc,GAEf,MAAM,2BAA2B,CAAC;AAEnC,iCAAiC;AACjC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,uDAAuD;AACvD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAW9B,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EACL,uBAAuB,EACvB,sBAAsB;AACtB,yBAAyB;AACzB,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAwBjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant-worker.d.ts","sourceRoot":"","sources":["../src/participant-worker.ts"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAMtE;;yBAEyB;AACzB,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,gBAAgB;IAE/B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACzD;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAChD,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;6CACyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC;;gDAE4C;IAC5C,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;CACvC;AAED;;sEAEsE;AACtE,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CACrC,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,qBAAqB,KACvB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,MAAM,WAAW,2BAA2B,CAAC,CAAC,EAAE,CAAC;IAC/C;wCACoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB;uFACmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB;yCACqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;8CAC0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb;iCAC6B;IAC7B,EAAE,EAAE,oBAAoB,CAAC;IACzB;;0DAEsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;4EAEwE;IACxE,WAAW,EAAE,eAAe,CAAC;IAC7B,yCAAyC;IACzC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC;;uCAEmC;IACnC,KAAK,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;qDACiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC1D,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC5D,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC;;mEAE+D;IAC/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;sEACkE;IAClE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAKD,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"participant-worker.d.ts","sourceRoot":"","sources":["../src/participant-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,8 +54,7 @@ export class ParticipantWorkerStarted extends Error {
|
|
|
54
54
|
}
|
|
55
55
|
export class ParticipantOutboxTableInvalid extends Error {
|
|
56
56
|
constructor(name) {
|
|
57
|
-
super(`@nodii/saga participant-worker: outboxTable name ${JSON.stringify(name)} is not a safe Postgres identifier.
|
|
58
|
-
"Allowed: [A-Za-z_][A-Za-z0-9_]* (no quoting, no dots, no spaces).");
|
|
57
|
+
super(`@nodii/saga participant-worker: outboxTable name ${JSON.stringify(name)} is not a safe Postgres identifier. Allowed: [A-Za-z_][A-Za-z0-9_]* (no quoting, no dots, no spaces).`);
|
|
59
58
|
this.name = "ParticipantOutboxTableInvalid";
|
|
60
59
|
}
|
|
61
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant-worker.js","sourceRoot":"","sources":["../src/participant-worker.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,qCAAqC;AACrC,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,yCAAyC;AACzC,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,kEAAkE;AAClE,gDAAgD;AAChD,EAAE;AACF,oCAAoC;AACpC,wEAAwE;AACxE,iEAAiE;AACjE,4CAA4C;AAC5C,mDAAmD;AACnD,sEAAsE;AACtE,iEAAiE;AACjE,oEAAoE;AACpE,8CAA8C;AAC9C,gEAAgE;AAChE,qEAAqE;AACrE,oEAAoE;AACpE,6BAA6B;AAC7B,sCAAsC;AACtC,EAAE;AACF,oEAAoE;AACpE,wEAAwE;AACxE,qEAAqE;AACrE,wEAAwE;AACxE,eAAe;AACf,EAAE;AACF,uBAAuB;AACvB,+DAA+D;AAC/D,uEAAuE;AACvE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,sEAAsE;AACtE,qEAAqE;AACrE,iCAAiC;AAIjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAyGhC,8EAA8E;AAC9E,UAAU;AAEV,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD;QACE,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,IAAY;QACtB,KAAK,CACH,oDAAoD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"participant-worker.js","sourceRoot":"","sources":["../src/participant-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/reaper.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { type LeaseRedisLike, SingleActiveLease } from "@nodii/telemetry/worker";
|
|
1
2
|
import type { SagaStateRow } from "./types";
|
|
3
|
+
/** Default lease scope segment — pinned for cross-lang parity (TS/Python/Go). */
|
|
4
|
+
export declare const DEFAULT_REAPER_LEASE_SCOPE = "saga-reaper";
|
|
5
|
+
/** Default lease TTL in ms — renew fires at ttl/2. */
|
|
6
|
+
export declare const DEFAULT_REAPER_LEASE_TTL_MS = 30000;
|
|
2
7
|
export interface SagaReaperOpts {
|
|
3
8
|
/** How often to scan; spec default = 5 * 60_000 ms (5 min). */
|
|
4
9
|
intervalMs?: number;
|
|
@@ -16,6 +21,64 @@ export interface SagaReaperOpts {
|
|
|
16
21
|
};
|
|
17
22
|
/** Test hook — fires on every transition so tests can assert. */
|
|
18
23
|
onTransition?: (saga: SagaStateRow) => void;
|
|
24
|
+
/**
|
|
25
|
+
* D402 Phase-2 — OPTIONAL single-active lease (parity: TS/Python/Go).
|
|
26
|
+
*
|
|
27
|
+
* A raw ioredis-shaped handle (`eval`/`get`/`set`/`del`) used purely to drive
|
|
28
|
+
* a {@link SingleActiveLease} so that when N replicas each start a reaper,
|
|
29
|
+
* ONLY the lease holder finalizes stale sagas; the rest SKIP their tick. May
|
|
30
|
+
* be the SAME ioredis handle the service already uses, or a dedicated one.
|
|
31
|
+
*
|
|
32
|
+
* **Absent ⇒ EXACT current behavior** (no lease, every tick reaps). This is
|
|
33
|
+
* the back-compat default and is unchanged.
|
|
34
|
+
*
|
|
35
|
+
* **Present ⇒** a `SingleActiveLease` is constructed with key
|
|
36
|
+
* `nodii:lease:<service>:<scope>`; only the active holder reaps, and
|
|
37
|
+
* `validateFence` is called BEFORE each non-idempotent finalize. The reaper's
|
|
38
|
+
* side effects are NON-idempotent, so the policy is **fail-CLOSED**: a
|
|
39
|
+
* lease-backend outage (acquire THROWS) SKIPS the tick + fires
|
|
40
|
+
* {@link SagaReaperOpts.onLeaseUnavailable} (it does NOT reap without the
|
|
41
|
+
* lease).
|
|
42
|
+
*
|
|
43
|
+
* Named `leaseRedis` for parity with the idempotency sweeper. (`redis` would
|
|
44
|
+
* have been ambiguous with the state-store-backing handle.)
|
|
45
|
+
*/
|
|
46
|
+
leaseRedis?: LeaseRedisLike;
|
|
47
|
+
/**
|
|
48
|
+
* Lease service name — first segment of `nodii:lease:<service>:<scope>`.
|
|
49
|
+
* REQUIRED when `leaseRedis` is provided (the reaper has no service id of its
|
|
50
|
+
* own to default from). Only used when `leaseRedis` is present.
|
|
51
|
+
*/
|
|
52
|
+
service?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Lease scope — second segment of `nodii:lease:<service>:<scope>`. Defaults
|
|
55
|
+
* to {@link DEFAULT_REAPER_LEASE_SCOPE} (`"saga-reaper"`). Only used when
|
|
56
|
+
* `leaseRedis` is present.
|
|
57
|
+
*/
|
|
58
|
+
scope?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Lease TTL in ms; renew fires at ttl/2. Defaults to
|
|
61
|
+
* {@link DEFAULT_REAPER_LEASE_TTL_MS}. Only used when `leaseRedis` is present.
|
|
62
|
+
*/
|
|
63
|
+
leaseTtlMs?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Stable per-instance owner id for the lease (defaults to a fresh uuidv7
|
|
66
|
+
* inside `SingleActiveLease`). Two distinct instances MUST use distinct owner
|
|
67
|
+
* ids to contend correctly. Only used when `leaseRedis` is present.
|
|
68
|
+
*/
|
|
69
|
+
leaseOwnerId?: string;
|
|
70
|
+
/**
|
|
71
|
+
* D402 Phase-2 — fired when a tick is SKIPPED because the lease backend is
|
|
72
|
+
* UNAVAILABLE (acquire threw / fence-check redis read failed). This is the
|
|
73
|
+
* observable fail-CLOSED signal: the reaper deliberately did NOT reap because
|
|
74
|
+
* it could not prove single-active ownership. Distinct from the benign "some
|
|
75
|
+
* other replica holds the lease" skip (which does NOT fire this). Only used
|
|
76
|
+
* when `leaseRedis` is present.
|
|
77
|
+
*/
|
|
78
|
+
onLeaseUnavailable?: (info: {
|
|
79
|
+
phase: "acquire" | "fence";
|
|
80
|
+
error: unknown;
|
|
81
|
+
}) => void;
|
|
19
82
|
}
|
|
20
83
|
export interface SagaReaperHandle {
|
|
21
84
|
/** Run one iteration synchronously (for tests + manual triggers). */
|
|
@@ -23,7 +86,9 @@ export interface SagaReaperHandle {
|
|
|
23
86
|
scanned: number;
|
|
24
87
|
reaped: number;
|
|
25
88
|
}>;
|
|
26
|
-
/**
|
|
89
|
+
/** The wired single-active lease, or null when running lease-free. */
|
|
90
|
+
readonly lease: SingleActiveLease | null;
|
|
91
|
+
/** Stop the periodic loop and (best-effort) release the lease. */
|
|
27
92
|
stop(): void;
|
|
28
93
|
}
|
|
29
94
|
export declare function startSagaReaper(opts?: SagaReaperOpts): SagaReaperHandle;
|
package/dist/reaper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaper.d.ts","sourceRoot":"","sources":["../src/reaper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reaper.d.ts","sourceRoot":"","sources":["../src/reaper.ts"],"names":[],"mappings":"AAuCA,OAAO,EAGL,KAAK,cAAc,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AAExD,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;0EAIsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;iCAC6B;IAC7B,SAAS,CAAC,EAAE;QACV,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QACtD,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KACrC,CAAC;IACF,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;QAC3B,KAAK,EAAE,OAAO,CAAC;KAChB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,kEAAkE;IAClE,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,cAAmB,GAAG,gBAAgB,CAgK3E"}
|
package/dist/reaper.js
CHANGED
|
@@ -8,7 +8,40 @@
|
|
|
8
8
|
// `startSagaReaper` returns a `stop()` handle. Tests use a tight
|
|
9
9
|
// `intervalMs` (e.g. 50) so the loop runs deterministically; production
|
|
10
10
|
// uses the spec default of 5 min.
|
|
11
|
+
//
|
|
12
|
+
// ── D402 Phase-2 — OPTIONAL single-active lease + fence (NON-idempotent worker)
|
|
13
|
+
//
|
|
14
|
+
// The reaper's per-row work is NON-IDEMPOTENT and OBSERVABLE:
|
|
15
|
+
// - `stateStore.updateSagaStatus(id, {status:"technical_failure", ...})` — a
|
|
16
|
+
// status transition (re-running it is a status-transition race), AND
|
|
17
|
+
// - `telemetryAudit.emit({action:"saga_reaper_grace_expired", ...})` — an
|
|
18
|
+
// audit row (re-running it duplicates the audit/alert).
|
|
19
|
+
// With N replicas each running a reaper, every replica would finalize every
|
|
20
|
+
// stale saga → duplicate audit rows + transition races. So the reaper composes
|
|
21
|
+
// the canonical `SingleActiveLease` (`@nodii/telemetry/worker`) to gate the
|
|
22
|
+
// whole tick to ONE replica AND `validateFence` BEFORE each non-idempotent side
|
|
23
|
+
// effect so a reaper that LOST the lease mid-run cannot finalize a row the
|
|
24
|
+
// successor now owns.
|
|
25
|
+
//
|
|
26
|
+
// FAIL-CLOSED policy (per hub decision e7eec3aa — policy is per-worker by
|
|
27
|
+
// idempotency): because the side effect is non-idempotent, a lease-backend
|
|
28
|
+
// OUTAGE means we must NOT reap (acting without the lease risks the exact
|
|
29
|
+
// double-finalize the lease exists to prevent). This is the OPPOSITE of the
|
|
30
|
+
// idempotency sweeper, whose SCAN+DEL is idempotent so it fail-OPENs. On a
|
|
31
|
+
// lease-backend outage the reaper SKIPS the tick + fires `onLeaseUnavailable`;
|
|
32
|
+
// the halt is observable and resumes automatically when the backend recovers.
|
|
33
|
+
//
|
|
34
|
+
// Back-compat: absent lease config ⇒ EXACT prior behavior (no lease; every tick
|
|
35
|
+
// reaps). No `legacyKey` is used — the reaper had no prior lease key, so there
|
|
36
|
+
// is nothing to mutually-exclude. The one-time deploy-window exposure where an
|
|
37
|
+
// OLD unleased replica co-runs with a NEW leased one is inherent to a first-time
|
|
38
|
+
// lease backfill and is covered by e7eec3aa; do NOT shim it here.
|
|
39
|
+
import { FenceCheckUnavailableError, FenceLostError, SingleActiveLease, } from "@nodii/telemetry/worker";
|
|
11
40
|
import { requireSaga } from "./init";
|
|
41
|
+
/** Default lease scope segment — pinned for cross-lang parity (TS/Python/Go). */
|
|
42
|
+
export const DEFAULT_REAPER_LEASE_SCOPE = "saga-reaper";
|
|
43
|
+
/** Default lease TTL in ms — renew fires at ttl/2. */
|
|
44
|
+
export const DEFAULT_REAPER_LEASE_TTL_MS = 30_000;
|
|
12
45
|
export function startSagaReaper(opts = {}) {
|
|
13
46
|
const intervalMs = opts.intervalMs ?? 5 * 60_000;
|
|
14
47
|
const gracePeriodMs = opts.gracePeriodMs ?? 24 * 60 * 60_000;
|
|
@@ -21,12 +54,47 @@ export function startSagaReaper(opts = {}) {
|
|
|
21
54
|
clearInterval(token);
|
|
22
55
|
},
|
|
23
56
|
};
|
|
57
|
+
// D402 Phase-2 — single-active lease (optional, back-compat absent).
|
|
58
|
+
const lease = opts.leaseRedis
|
|
59
|
+
? new SingleActiveLease({
|
|
60
|
+
redis: opts.leaseRedis,
|
|
61
|
+
service: opts.service ?? "saga",
|
|
62
|
+
scope: opts.scope ?? DEFAULT_REAPER_LEASE_SCOPE,
|
|
63
|
+
ttlMs: opts.leaseTtlMs ?? DEFAULT_REAPER_LEASE_TTL_MS,
|
|
64
|
+
ownerId: opts.leaseOwnerId,
|
|
65
|
+
})
|
|
66
|
+
: null;
|
|
24
67
|
let running = false;
|
|
25
68
|
const runOnce = async () => {
|
|
26
69
|
if (running)
|
|
27
70
|
return { scanned: 0, reaped: 0 };
|
|
28
71
|
running = true;
|
|
29
72
|
try {
|
|
73
|
+
// D402 Phase-2 — single-active gate. Lease-free ⇒ always reap (back-compat).
|
|
74
|
+
if (lease !== null) {
|
|
75
|
+
if (!lease.leaseAcquired) {
|
|
76
|
+
try {
|
|
77
|
+
await lease.acquire();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// FAIL-CLOSED: the lease backend is DOWN (acquire's redis eval
|
|
81
|
+
// threw). The side effect is NON-idempotent, so we must NOT reap
|
|
82
|
+
// without proof of single-active ownership — that risks the exact
|
|
83
|
+
// double-finalize the lease exists to prevent. SKIP this tick + fire
|
|
84
|
+
// the observable hook; the reaper resumes when the backend recovers.
|
|
85
|
+
// (Contrast: the idempotency sweeper fail-OPENs because its SCAN+DEL
|
|
86
|
+
// is idempotent — per hub decision e7eec3aa.)
|
|
87
|
+
opts.onLeaseUnavailable?.({ phase: "acquire", error });
|
|
88
|
+
return { scanned: 0, reaped: 0 };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (!lease.leaseAcquired) {
|
|
92
|
+
// CLEAN not-acquired — another replica holds the lease. This is the
|
|
93
|
+
// benign single-active skip (NOT a backend outage); do NOT fire
|
|
94
|
+
// onLeaseUnavailable. The holder reaps; we idle this tick.
|
|
95
|
+
return { scanned: 0, reaped: 0 };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
30
98
|
const cfg = requireSaga();
|
|
31
99
|
if (!cfg.stateStore.listStalePaused) {
|
|
32
100
|
cfg.logger.warn("saga reaper: configured state store does not implement listStalePaused; reaper is a no-op", {});
|
|
@@ -41,12 +109,36 @@ export function startSagaReaper(opts = {}) {
|
|
|
41
109
|
let reaped = 0;
|
|
42
110
|
for (const row of stale) {
|
|
43
111
|
try {
|
|
112
|
+
// D402 Phase-2 — fence BEFORE the non-idempotent finalize. If we LOST
|
|
113
|
+
// the lease since acquiring (a successor took over), this throws
|
|
114
|
+
// FenceLostError and we abort the row cleanly — finalizing it is now
|
|
115
|
+
// the successor's job. A transient fence-check redis failure throws
|
|
116
|
+
// FenceCheckUnavailableError → fail-CLOSED (we could not prove
|
|
117
|
+
// ownership, so we do NOT finalize without the lease).
|
|
118
|
+
if (lease !== null) {
|
|
119
|
+
const token = lease.fencingToken;
|
|
120
|
+
if (token === null) {
|
|
121
|
+
throw new FenceLostError({
|
|
122
|
+
leaseKey: lease.key,
|
|
123
|
+
expectedToken: -1,
|
|
124
|
+
current: null,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
await lease.validateFence(token);
|
|
128
|
+
}
|
|
44
129
|
await cfg.stateStore.updateSagaStatus(row.id, {
|
|
45
130
|
status: "technical_failure",
|
|
46
131
|
failure_reason: "resume_signal_timeout",
|
|
47
132
|
completed_at: new Date().toISOString(),
|
|
48
133
|
});
|
|
49
134
|
if (cfg.telemetryAudit) {
|
|
135
|
+
// Re-fence right before the SECOND non-idempotent side effect: the
|
|
136
|
+
// updateSagaStatus above could have raced a lease takeover. Without
|
|
137
|
+
// this a lease-lost reaper that squeaked the status write through
|
|
138
|
+
// would still duplicate the audit row.
|
|
139
|
+
if (lease !== null) {
|
|
140
|
+
await lease.validateFence(lease.fencingToken ?? -1);
|
|
141
|
+
}
|
|
50
142
|
await cfg.telemetryAudit.emit({
|
|
51
143
|
action: "saga_reaper_grace_expired",
|
|
52
144
|
target_kind: "saga",
|
|
@@ -61,6 +153,20 @@ export function startSagaReaper(opts = {}) {
|
|
|
61
153
|
reaped += 1;
|
|
62
154
|
}
|
|
63
155
|
catch (err) {
|
|
156
|
+
if (err instanceof FenceLostError) {
|
|
157
|
+
// A successor took over the lease mid-run — STOP reaping entirely.
|
|
158
|
+
// We are no longer the single-active reaper; the remaining rows are
|
|
159
|
+
// the successor's to finalize. This is NOT a failure to log per-row.
|
|
160
|
+
cfg.logger.warn("saga reaper: lease lost mid-run; ceding remaining sagas to successor", { saga_id: row.id });
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
if (err instanceof FenceCheckUnavailableError) {
|
|
164
|
+
// The fence-check redis read failed transiently — we cannot prove
|
|
165
|
+
// ownership. FAIL-CLOSED: stop reaping this tick + surface the
|
|
166
|
+
// unavailability. The reaper retries on the next tick after recovery.
|
|
167
|
+
opts.onLeaseUnavailable?.({ phase: "fence", error: err });
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
64
170
|
cfg.logger.warn("saga reaper: failed to finalize paused saga", {
|
|
65
171
|
saga_id: row.id,
|
|
66
172
|
error: err instanceof Error ? err.message : String(err),
|
|
@@ -78,8 +184,13 @@ export function startSagaReaper(opts = {}) {
|
|
|
78
184
|
}, intervalMs);
|
|
79
185
|
return {
|
|
80
186
|
runOnce,
|
|
187
|
+
lease,
|
|
81
188
|
stop() {
|
|
82
189
|
scheduler.clearInterval(token);
|
|
190
|
+
// Best-effort lease release on drain so a successor can take over fast.
|
|
191
|
+
if (lease !== null) {
|
|
192
|
+
void lease.release();
|
|
193
|
+
}
|
|
83
194
|
},
|
|
84
195
|
};
|
|
85
196
|
}
|
package/dist/reaper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../src/reaper.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,mEAAmE;AACnE,uEAAuE;AACvE,qEAAqE;AACrE,6BAA6B;AAC7B,EAAE;AACF,iEAAiE;AACjE,wEAAwE;AACxE,kCAAkC;
|
|
1
|
+
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../src/reaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { Redis } from "ioredis";
|
|
2
2
|
import type { SagaSignalBus } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Default approximate MAXLEN for the saga signal stream (drift `a695162e` /
|
|
5
|
+
* platform retention standard, hub request `16379425`). The 2026-06-24 Redis
|
|
6
|
+
* OOM cost incident was caused by untrimmed Redis streams growing without
|
|
7
|
+
* bound; an unbounded `XADD` on a high-churn coordination stream is exactly
|
|
8
|
+
* that hazard. Signals are EPHEMERAL (consumed within ms by per-saga consumer
|
|
9
|
+
* groups), so a tighter bound than the 1M replication-stream default is both
|
|
10
|
+
* safe (far above any in-flight working set) and much kinder to a small
|
|
11
|
+
* ElastiCache node. Overridable via `streamMaxLenApprox`; pass `0` to disable
|
|
12
|
+
* trimming entirely (NOT recommended in production).
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_SIGNAL_STREAM_MAXLEN = 100000;
|
|
3
15
|
export interface RedisSignalBusOpts {
|
|
4
16
|
redis: Redis;
|
|
5
17
|
serviceId: string;
|
|
@@ -7,11 +19,18 @@ export interface RedisSignalBusOpts {
|
|
|
7
19
|
streamName?: string;
|
|
8
20
|
/** XREADGROUP block window in ms (default 50). */
|
|
9
21
|
blockMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Approximate per-stream `MAXLEN ~` trim applied on every signal `XADD`
|
|
24
|
+
* (default {@link DEFAULT_SIGNAL_STREAM_MAXLEN}). Bounds the signal stream
|
|
25
|
+
* so it cannot grow unbounded → Redis OOM. `0` disables trimming.
|
|
26
|
+
*/
|
|
27
|
+
streamMaxLenApprox?: number;
|
|
10
28
|
}
|
|
11
29
|
export declare class RedisSignalBus implements SagaSignalBus {
|
|
12
30
|
private readonly redis;
|
|
13
31
|
private readonly stream;
|
|
14
32
|
private readonly blockMs;
|
|
33
|
+
private readonly streamMaxLenApprox;
|
|
15
34
|
private readonly groupsEnsured;
|
|
16
35
|
constructor(opts: RedisSignalBusOpts);
|
|
17
36
|
emit(args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-stream.d.ts","sourceRoot":"","sources":["../../src/signal-bus/redis-stream.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"redis-stream.d.ts","sourceRoot":"","sources":["../../src/signal-bus/redis-stream.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAWD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAI5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,IAAI,EAAE,kBAAkB;IAQ9B,IAAI,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;QAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BX,OAAO,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;KAC3C,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwDrB,IAAI,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAyBtE,0DAA0D;IACpD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,WAAW;CAa1B"}
|
|
@@ -12,10 +12,23 @@
|
|
|
12
12
|
// - We claim with a short block (50ms) so callers can poll without
|
|
13
13
|
// blocking forever; the higher-level `awaitSagaSignal` does the
|
|
14
14
|
// timeout-budget loop.
|
|
15
|
+
/**
|
|
16
|
+
* Default approximate MAXLEN for the saga signal stream (drift `a695162e` /
|
|
17
|
+
* platform retention standard, hub request `16379425`). The 2026-06-24 Redis
|
|
18
|
+
* OOM cost incident was caused by untrimmed Redis streams growing without
|
|
19
|
+
* bound; an unbounded `XADD` on a high-churn coordination stream is exactly
|
|
20
|
+
* that hazard. Signals are EPHEMERAL (consumed within ms by per-saga consumer
|
|
21
|
+
* groups), so a tighter bound than the 1M replication-stream default is both
|
|
22
|
+
* safe (far above any in-flight working set) and much kinder to a small
|
|
23
|
+
* ElastiCache node. Overridable via `streamMaxLenApprox`; pass `0` to disable
|
|
24
|
+
* trimming entirely (NOT recommended in production).
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_SIGNAL_STREAM_MAXLEN = 100_000;
|
|
15
27
|
export class RedisSignalBus {
|
|
16
28
|
redis;
|
|
17
29
|
stream;
|
|
18
30
|
blockMs;
|
|
31
|
+
streamMaxLenApprox;
|
|
19
32
|
// Consumer group / consumer name dedup. We attempt MKSTREAM-create
|
|
20
33
|
// lazily; second concurrent call collides but Redis errors are
|
|
21
34
|
// benignly ignored.
|
|
@@ -24,9 +37,32 @@ export class RedisSignalBus {
|
|
|
24
37
|
this.redis = opts.redis;
|
|
25
38
|
this.stream = opts.streamName ?? `nodii:${opts.serviceId}:saga:signals`;
|
|
26
39
|
this.blockMs = opts.blockMs ?? 50;
|
|
40
|
+
this.streamMaxLenApprox =
|
|
41
|
+
opts.streamMaxLenApprox ?? DEFAULT_SIGNAL_STREAM_MAXLEN;
|
|
27
42
|
}
|
|
28
43
|
async emit(args) {
|
|
29
|
-
|
|
44
|
+
// Bound the signal stream on every append (drift `a695162e`): `MAXLEN ~ N`
|
|
45
|
+
// approximate-trims so the stream cannot grow without bound → Redis OOM.
|
|
46
|
+
// `~` lets Redis trim in whole macro-nodes (cheap); `streamMaxLenApprox=0`
|
|
47
|
+
// opts out (mirrors @nodii/outbox-dispatcher + @nodii/replica-consumer).
|
|
48
|
+
const fields = [
|
|
49
|
+
"saga_id",
|
|
50
|
+
args.sagaId,
|
|
51
|
+
"event_type",
|
|
52
|
+
args.eventType,
|
|
53
|
+
"payload",
|
|
54
|
+
JSON.stringify(args.payload ?? null),
|
|
55
|
+
"scope",
|
|
56
|
+
args.scope ?? "siblings",
|
|
57
|
+
"to",
|
|
58
|
+
args.to ?? "",
|
|
59
|
+
];
|
|
60
|
+
if (this.streamMaxLenApprox > 0) {
|
|
61
|
+
await this.redis.xadd(this.stream, "MAXLEN", "~", this.streamMaxLenApprox, "*", ...fields);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
await this.redis.xadd(this.stream, "*", ...fields);
|
|
65
|
+
}
|
|
30
66
|
}
|
|
31
67
|
async consume(args) {
|
|
32
68
|
const group = `saga:${args.sagaId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-stream.js","sourceRoot":"","sources":["../../src/signal-bus/redis-stream.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qDAAqD;AACrD,EAAE;AACF,eAAe;AACf,sEAAsE;AACtE,yEAAyE;AACzE,mEAAmE;AACnE,uEAAuE;AACvE,8CAA8C;AAC9C,mEAAmE;AACnE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,2BAA2B;
|
|
1
|
+
{"version":3,"file":"redis-stream.js","sourceRoot":"","sources":["../../src/signal-bus/redis-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-state-store.d.ts","sourceRoot":"","sources":["../../src/test-doubles/in-memory-state-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAC;AAUlB,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,IAAI,CAAmC;IAC/C,OAAO,CAAC,MAAM,CAAqB;IAE7B,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKrD,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CACb,IAAI,CACF,YAAY,EACV,QAAQ,GACR,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,qBAAqB,GACrB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,iBAAiB,CACpB,CACF,GACA,OAAO,CAAC,IAAI,CAAC;IAMV,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC;IAMV,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMV,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-state-store.d.ts","sourceRoot":"","sources":["../../src/test-doubles/in-memory-state-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAC;AAUlB,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,IAAI,CAAmC;IAC/C,OAAO,CAAC,MAAM,CAAqB;IAE7B,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKrD,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CACb,IAAI,CACF,YAAY,EACV,QAAQ,GACR,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,qBAAqB,GACrB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,iBAAiB,CACpB,CACF,GACA,OAAO,CAAC,IAAI,CAAC;IAMV,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC;IAMV,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMV,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASrE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBvD,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC;IAgBpB,gBAAgB,CAAC,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUX,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAC9C;QACE,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CACJ;CAUF"}
|
|
@@ -39,7 +39,8 @@ export class InMemorySagaStateStore {
|
|
|
39
39
|
throw new Error(`saga ${sagaId} not found`);
|
|
40
40
|
// Mirror the durable jsonb append — clone so a later mutation of the
|
|
41
41
|
// caller's entry can't leak into the stored snapshot.
|
|
42
|
-
|
|
42
|
+
row.undo_stack ??= [];
|
|
43
|
+
row.undo_stack.push(structuredClone(entry));
|
|
43
44
|
}
|
|
44
45
|
async clearUndoStack(sagaId) {
|
|
45
46
|
const row = this.rows.get(sagaId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-state-store.js","sourceRoot":"","sources":["../../src/test-doubles/in-memory-state-store.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,sEAAsE;AACtE,yEAAyE;AACzE,mBAAmB;AAkBnB,MAAM,OAAO,sBAAsB;IACzB,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IACvC,MAAM,GAAkB,EAAE,CAAC;IAEnC,KAAK,CAAC,UAAU,CAAC,GAAiB;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,MAeC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,QAAgB,EAChB,MAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QACtD,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,KAA2B;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QACtD,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,KAAqB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QACtD,qEAAqE;QACrE,sDAAsD;QACtD,
|
|
1
|
+
{"version":3,"file":"in-memory-state-store.js","sourceRoot":"","sources":["../../src/test-doubles/in-memory-state-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nodii/saga",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Saga orchestration library for the Nodii microservice stack — createSaga + step + stepParallel + cross-saga signals + sagaContext interceptor + SagaAdminService factory + @sagaCallable discipline tag + real PostgresSagaStateStore + RedisSignalBus + Pattern 2 async-step + reaper. Polyglot per D159 (TS + Python + Go).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"ioredis": "^5.4.0",
|
|
34
34
|
"postgres": "^3.4.0",
|
|
35
35
|
"@nodii/grpc-auth": ">=0.5.1 <1.0.0",
|
|
36
|
-
"@nodii/telemetry": ">=0.
|
|
36
|
+
"@nodii/telemetry": ">=0.14.0 <1.0.0"
|
|
37
37
|
},
|
|
38
38
|
"peerDependenciesMeta": {
|
|
39
39
|
"ioredis": {
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@nodii/db-rls": "0.
|
|
48
|
-
"@nodii/grpc-auth": "0.
|
|
49
|
-
"@nodii/telemetry": "0.
|
|
47
|
+
"@nodii/db-rls": "0.8.3",
|
|
48
|
+
"@nodii/grpc-auth": "0.11.0",
|
|
49
|
+
"@nodii/telemetry": "0.16.0",
|
|
50
50
|
"@types/bun": "^1.3.13",
|
|
51
51
|
"ioredis": "^5.4.0",
|
|
52
52
|
"postgres": "^3.4.0",
|