@acmekit/orchestration 2.13.35 → 2.13.37
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/transaction/errors.d.ts +0 -14
- package/dist/transaction/errors.d.ts.map +1 -1
- package/dist/transaction/errors.js +1 -37
- package/dist/transaction/errors.js.map +1 -1
- package/dist/transaction/index.d.ts +0 -4
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction/index.js +0 -4
- package/dist/transaction/index.js.map +1 -1
- package/dist/transaction/transaction-orchestrator.d.ts +0 -31
- package/dist/transaction/transaction-orchestrator.d.ts.map +1 -1
- package/dist/transaction/transaction-orchestrator.js +1 -225
- package/dist/transaction/transaction-orchestrator.js.map +1 -1
- package/dist/transaction/types.d.ts +0 -85
- package/dist/transaction/types.d.ts.map +1 -1
- package/dist/transaction/types.js +0 -1
- package/dist/transaction/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/transaction/audit-log.d.ts +0 -66
- package/dist/transaction/audit-log.d.ts.map +0 -1
- package/dist/transaction/audit-log.js +0 -32
- package/dist/transaction/audit-log.js.map +0 -1
- package/dist/transaction/circuit-breaker.d.ts +0 -48
- package/dist/transaction/circuit-breaker.d.ts.map +0 -1
- package/dist/transaction/circuit-breaker.js +0 -59
- package/dist/transaction/circuit-breaker.js.map +0 -1
- package/dist/transaction/metrics.d.ts +0 -71
- package/dist/transaction/metrics.d.ts.map +0 -1
- package/dist/transaction/metrics.js +0 -37
- package/dist/transaction/metrics.js.map +0 -1
- package/dist/transaction/rate-limiter.d.ts +0 -40
- package/dist/transaction/rate-limiter.d.ts.map +0 -1
- package/dist/transaction/rate-limiter.js +0 -31
- package/dist/transaction/rate-limiter.js.map +0 -1
|
@@ -31,20 +31,6 @@ export declare class SkipStepAlreadyFinishedError extends Error {
|
|
|
31
31
|
static isSkipStepAlreadyFinishedError(error: Error): error is SkipStepAlreadyFinishedError;
|
|
32
32
|
constructor(message?: string);
|
|
33
33
|
}
|
|
34
|
-
export declare class WorkflowVersionMismatchError extends Error {
|
|
35
|
-
currentVersion: string;
|
|
36
|
-
storedVersion: string;
|
|
37
|
-
static isWorkflowVersionMismatchError(error: Error): error is WorkflowVersionMismatchError;
|
|
38
|
-
constructor(currentVersion: string, storedVersion: string, message?: string);
|
|
39
|
-
}
|
|
40
|
-
export declare class CircuitOpenError extends Error {
|
|
41
|
-
static isCircuitOpenError(error: Error): error is CircuitOpenError;
|
|
42
|
-
constructor(stepAction: string);
|
|
43
|
-
}
|
|
44
|
-
export declare class RateLimitExceededError extends Error {
|
|
45
|
-
static isRateLimitExceededError(error: Error): error is RateLimitExceededError;
|
|
46
|
-
constructor(workflowId: string);
|
|
47
|
-
}
|
|
48
34
|
export declare class SkipCancelledExecutionError extends Error {
|
|
49
35
|
#private;
|
|
50
36
|
get __type(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"AAEA,cAAM,cAAe,SAAQ,KAAK;;gBAGpB,IAAI,KAAA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IAM1D,eAAe,IAAI,OAAO;CAG3B;AAED,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,MAAM,CAAC,2BAA2B,CAChC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,yBAAyB;gBAOzB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB;gBAMtD,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,2BAA4B,SAAQ,cAAc;IAC7D,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IACzD,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,uBAAuB;gBAOvB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,gCAAgC,CACrC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,8BAA8B;gBAO9B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,kBAAkB;gBAO1D,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,8BAA8B,CACnC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,4BAA4B;gBAO5B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"AAEA,cAAM,cAAe,SAAQ,KAAK;;gBAGpB,IAAI,KAAA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IAM1D,eAAe,IAAI,OAAO;CAG3B;AAED,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,MAAM,CAAC,2BAA2B,CAChC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,yBAAyB;gBAOzB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,gBAAgB;gBAMtD,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,2BAA4B,SAAQ,cAAc;IAC7D,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IACzD,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,uBAAuB;gBAOvB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAGrD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,gCAAgC,CACrC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,8BAA8B;gBAO9B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,kBAAkB;gBAO1D,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,8BAA8B,CACnC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,4BAA4B;gBAO5B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;IAGpD,IAAI,MAAM,WAET;IAED,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,KAAK,GACX,KAAK,IAAI,2BAA2B;gBAO3B,OAAO,CAAC,EAAE,MAAM;CAI7B"}
|
|
@@ -12,7 +12,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
};
|
|
13
13
|
var _BaseStepErrror_stepResponse, _SkipCancelledExecutionError___type;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SkipCancelledExecutionError = exports.
|
|
15
|
+
exports.SkipCancelledExecutionError = exports.SkipStepAlreadyFinishedError = exports.SkipExecutionError = exports.NonSerializableCheckPointError = exports.TransactionTimeoutError = exports.TransactionStepTimeoutError = exports.SkipStepResponse = exports.PermanentStepFailureError = void 0;
|
|
16
16
|
const utils_1 = require("@acmekit/utils");
|
|
17
17
|
class BaseStepErrror extends Error {
|
|
18
18
|
constructor(name, message, stepResponse) {
|
|
@@ -98,42 +98,6 @@ class SkipStepAlreadyFinishedError extends Error {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
exports.SkipStepAlreadyFinishedError = SkipStepAlreadyFinishedError;
|
|
101
|
-
class WorkflowVersionMismatchError extends Error {
|
|
102
|
-
static isWorkflowVersionMismatchError(error) {
|
|
103
|
-
return (error instanceof WorkflowVersionMismatchError ||
|
|
104
|
-
error?.name === "WorkflowVersionMismatchError");
|
|
105
|
-
}
|
|
106
|
-
constructor(currentVersion, storedVersion, message) {
|
|
107
|
-
super(message ??
|
|
108
|
-
`Workflow version mismatch: stored "${storedVersion}" vs current "${currentVersion}". ` +
|
|
109
|
-
`Use migrations to handle version changes or set versionPolicy to "lenient".`);
|
|
110
|
-
this.currentVersion = currentVersion;
|
|
111
|
-
this.storedVersion = storedVersion;
|
|
112
|
-
this.name = "WorkflowVersionMismatchError";
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.WorkflowVersionMismatchError = WorkflowVersionMismatchError;
|
|
116
|
-
class CircuitOpenError extends Error {
|
|
117
|
-
static isCircuitOpenError(error) {
|
|
118
|
-
return (error instanceof CircuitOpenError || error?.name === "CircuitOpenError");
|
|
119
|
-
}
|
|
120
|
-
constructor(stepAction) {
|
|
121
|
-
super(`Circuit breaker is open for step "${stepAction}"`);
|
|
122
|
-
this.name = "CircuitOpenError";
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
exports.CircuitOpenError = CircuitOpenError;
|
|
126
|
-
class RateLimitExceededError extends Error {
|
|
127
|
-
static isRateLimitExceededError(error) {
|
|
128
|
-
return (error instanceof RateLimitExceededError ||
|
|
129
|
-
error?.name === "RateLimitExceededError");
|
|
130
|
-
}
|
|
131
|
-
constructor(workflowId) {
|
|
132
|
-
super(`Rate limit exceeded for workflow "${workflowId}"`);
|
|
133
|
-
this.name = "RateLimitExceededError";
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
exports.RateLimitExceededError = RateLimitExceededError;
|
|
137
101
|
class SkipCancelledExecutionError extends Error {
|
|
138
102
|
get __type() {
|
|
139
103
|
return __classPrivateFieldGet(this, _SkipCancelledExecutionError___type, "f");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transaction/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
export * from "./audit-log";
|
|
2
|
-
export * from "./circuit-breaker";
|
|
3
1
|
export * from "./datastore/abstract-storage";
|
|
4
2
|
export * from "./distributed-transaction";
|
|
5
3
|
export * from "./errors";
|
|
6
|
-
export * from "./metrics";
|
|
7
4
|
export * from "./orchestrator-builder";
|
|
8
|
-
export * from "./rate-limiter";
|
|
9
5
|
export * from "./transaction-orchestrator";
|
|
10
6
|
export * from "./transaction-step";
|
|
11
7
|
export * from "./types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA"}
|
|
@@ -14,14 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./audit-log"), exports);
|
|
18
|
-
__exportStar(require("./circuit-breaker"), exports);
|
|
19
17
|
__exportStar(require("./datastore/abstract-storage"), exports);
|
|
20
18
|
__exportStar(require("./distributed-transaction"), exports);
|
|
21
19
|
__exportStar(require("./errors"), exports);
|
|
22
|
-
__exportStar(require("./metrics"), exports);
|
|
23
20
|
__exportStar(require("./orchestrator-builder"), exports);
|
|
24
|
-
__exportStar(require("./rate-limiter"), exports);
|
|
25
21
|
__exportStar(require("./transaction-orchestrator"), exports);
|
|
26
22
|
__exportStar(require("./transaction-step"), exports);
|
|
27
23
|
__exportStar(require("./types"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA4C;AAC5C,4DAAyC;AACzC,2CAAwB;AACxB,yDAAsC;AACtC,6DAA0C;AAC1C,qDAAkC;AAClC,0CAAuB"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { IAuditLogStore } from "./audit-log";
|
|
2
|
-
import { ICircuitBreaker } from "./circuit-breaker";
|
|
3
1
|
import { DistributedTransactionType } from "./distributed-transaction";
|
|
4
|
-
import { IMetricsCollector } from "./metrics";
|
|
5
|
-
import { IRateLimiter } from "./rate-limiter";
|
|
6
2
|
import { TransactionStep, TransactionStepHandler } from "./transaction-step";
|
|
7
3
|
import { StepFeatures, TransactionFlow, TransactionModelOptions, TransactionOptions, TransactionStepsDefinition } from "./types";
|
|
8
4
|
import { Context } from "@acmekit/types";
|
|
@@ -43,32 +39,6 @@ export declare class TransactionOrchestrator extends EventEmitter {
|
|
|
43
39
|
async: boolean;
|
|
44
40
|
idempotency_key: string;
|
|
45
41
|
}) => Promise<any>;
|
|
46
|
-
/**
|
|
47
|
-
* Optional metrics collector for recording step and workflow metrics.
|
|
48
|
-
* Set this to integrate with Prometheus, Datadog, or any monitoring system.
|
|
49
|
-
*/
|
|
50
|
-
static metricsCollector?: IMetricsCollector;
|
|
51
|
-
/**
|
|
52
|
-
* Optional audit log store for persisting workflow state transitions.
|
|
53
|
-
* Set this to store audit entries in a database, Redis stream, or external service.
|
|
54
|
-
*/
|
|
55
|
-
static auditLogStore?: IAuditLogStore;
|
|
56
|
-
/**
|
|
57
|
-
* Optional circuit breaker for protecting steps from repeated failures.
|
|
58
|
-
* Defaults to an InMemoryCircuitBreaker when a step has circuitBreaker config.
|
|
59
|
-
*/
|
|
60
|
-
static circuitBreaker?: ICircuitBreaker;
|
|
61
|
-
/**
|
|
62
|
-
* Optional rate limiter for throttling workflow executions.
|
|
63
|
-
* Set this to use Redis-backed or distributed rate limiting.
|
|
64
|
-
*/
|
|
65
|
-
static rateLimiter?: IRateLimiter;
|
|
66
|
-
private static appendAuditEntry;
|
|
67
|
-
/**
|
|
68
|
-
* Compute a simple hash of a workflow definition for version tracking.
|
|
69
|
-
* This uses the action names and their order as the version fingerprint.
|
|
70
|
-
*/
|
|
71
|
-
private static computeDefinitionHash;
|
|
72
42
|
constructor({ id, definition, options, isClone, }: {
|
|
73
43
|
id: string;
|
|
74
44
|
definition: TransactionStepsDefinition;
|
|
@@ -150,7 +120,6 @@ export declare class TransactionOrchestrator extends EventEmitter {
|
|
|
150
120
|
*/
|
|
151
121
|
cancelTransaction(transaction: DistributedTransactionType, options?: {
|
|
152
122
|
preventExecuteNext?: boolean;
|
|
153
|
-
reason?: string;
|
|
154
123
|
}): Promise<void>;
|
|
155
124
|
private parseFlowOptions;
|
|
156
125
|
private createTransactionFlow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-orchestrator.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction-orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"transaction-orchestrator.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransactionOrchestrator = void 0;
|
|
4
4
|
const ulid_1 = require("ulid");
|
|
5
|
-
const circuit_breaker_1 = require("./circuit-breaker");
|
|
6
5
|
const distributed_transaction_1 = require("./distributed-transaction");
|
|
7
6
|
const transaction_step_1 = require("./transaction-step");
|
|
8
7
|
const types_1 = require("./types");
|
|
@@ -40,56 +39,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
40
39
|
static getWorkflowOptions(modelId) {
|
|
41
40
|
return TransactionOrchestrator.workflowOptions[modelId];
|
|
42
41
|
}
|
|
43
|
-
static appendAuditEntry(transaction, event, step, extra) {
|
|
44
|
-
const store = TransactionOrchestrator.auditLogStore;
|
|
45
|
-
if (!store) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const flow = transaction.getFlow();
|
|
49
|
-
if (!flow.options?.auditLog) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const entry = {
|
|
53
|
-
id: (0, ulid_1.ulid)(),
|
|
54
|
-
timestamp: Date.now(),
|
|
55
|
-
event,
|
|
56
|
-
workflowId: flow.modelId,
|
|
57
|
-
transactionId: flow.transactionId,
|
|
58
|
-
stepId: step?.id,
|
|
59
|
-
stepAction: step?.definition.action,
|
|
60
|
-
handlerType: step
|
|
61
|
-
? step.isCompensating()
|
|
62
|
-
? "compensate"
|
|
63
|
-
: "invoke"
|
|
64
|
-
: undefined,
|
|
65
|
-
attempt: step?.attempts,
|
|
66
|
-
...extra,
|
|
67
|
-
};
|
|
68
|
-
// Fire-and-forget; don't block the transaction
|
|
69
|
-
void Promise.resolve(store.append(entry)).catch(() => { });
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Compute a simple hash of a workflow definition for version tracking.
|
|
73
|
-
* This uses the action names and their order as the version fingerprint.
|
|
74
|
-
*/
|
|
75
|
-
static computeDefinitionHash(definition) {
|
|
76
|
-
const actions = [];
|
|
77
|
-
const queue = [definition];
|
|
78
|
-
while (queue.length > 0) {
|
|
79
|
-
const node = queue.shift();
|
|
80
|
-
if (node.action) {
|
|
81
|
-
actions.push(node.action);
|
|
82
|
-
}
|
|
83
|
-
if (Array.isArray(node.next)) {
|
|
84
|
-
queue.push(...node.next);
|
|
85
|
-
}
|
|
86
|
-
else if (node.next && (0, utils_1.isObject)(node.next)) {
|
|
87
|
-
queue.push(node.next);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Simple hash: join action names. This is deterministic and fast.
|
|
91
|
-
return actions.join("|");
|
|
92
|
-
}
|
|
93
42
|
constructor({ id, definition, options, isClone, }) {
|
|
94
43
|
super();
|
|
95
44
|
this.invokeSteps = [];
|
|
@@ -218,7 +167,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
218
167
|
flow.state = types_1.TransactionState.COMPENSATING;
|
|
219
168
|
this.flagStepsToRevert(flow);
|
|
220
169
|
this.emit(types_1.DistributedTransactionEvent.COMPENSATE_BEGIN, { transaction });
|
|
221
|
-
TransactionOrchestrator.appendAuditEntry(transaction, types_1.DistributedTransactionEvent.COMPENSATE_BEGIN);
|
|
222
170
|
const result = await this.checkAllSteps(transaction);
|
|
223
171
|
return result;
|
|
224
172
|
}
|
|
@@ -419,25 +367,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
419
367
|
? types_1.DistributedTransactionEvent.COMPENSATE_STEP_SUCCESS
|
|
420
368
|
: types_1.DistributedTransactionEvent.STEP_SUCCESS;
|
|
421
369
|
transaction.emit(eventName, { step, transaction });
|
|
422
|
-
const durationMs = step.startedAt
|
|
423
|
-
? Date.now() - step.startedAt
|
|
424
|
-
: undefined;
|
|
425
|
-
TransactionOrchestrator.appendAuditEntry(transaction, eventName, step, { durationMs });
|
|
426
|
-
if (TransactionOrchestrator.metricsCollector) {
|
|
427
|
-
const now = Date.now();
|
|
428
|
-
TransactionOrchestrator.metricsCollector.recordStepMetrics({
|
|
429
|
-
workflowId: transaction.getFlow().modelId,
|
|
430
|
-
transactionId: transaction.getFlow().transactionId,
|
|
431
|
-
stepId: step.id,
|
|
432
|
-
action: step.definition.action,
|
|
433
|
-
type: step.isCompensating() ? "compensate" : "invoke",
|
|
434
|
-
status: "success",
|
|
435
|
-
attempt: step.attempts,
|
|
436
|
-
startedAt: step.startedAt ?? now,
|
|
437
|
-
completedAt: now,
|
|
438
|
-
durationMs: durationMs ?? 0,
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
370
|
}
|
|
442
371
|
return {
|
|
443
372
|
stopExecution: !shouldEmit,
|
|
@@ -502,22 +431,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
502
431
|
if (shouldEmit) {
|
|
503
432
|
const eventName = types_1.DistributedTransactionEvent.STEP_SKIPPED;
|
|
504
433
|
transaction.emit(eventName, { step, transaction });
|
|
505
|
-
TransactionOrchestrator.appendAuditEntry(transaction, eventName, step);
|
|
506
|
-
if (TransactionOrchestrator.metricsCollector) {
|
|
507
|
-
const now = Date.now();
|
|
508
|
-
TransactionOrchestrator.metricsCollector.recordStepMetrics({
|
|
509
|
-
workflowId: transaction.getFlow().modelId,
|
|
510
|
-
transactionId: transaction.getFlow().transactionId,
|
|
511
|
-
stepId: step.id,
|
|
512
|
-
action: step.definition.action,
|
|
513
|
-
type: step.isCompensating() ? "compensate" : "invoke",
|
|
514
|
-
status: "skipped",
|
|
515
|
-
attempt: step.attempts,
|
|
516
|
-
startedAt: step.startedAt ?? now,
|
|
517
|
-
completedAt: now,
|
|
518
|
-
durationMs: step.startedAt ? now - step.startedAt : 0,
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
434
|
}
|
|
522
435
|
return {
|
|
523
436
|
stopExecution: !shouldEmit,
|
|
@@ -551,12 +464,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
551
464
|
return result;
|
|
552
465
|
}
|
|
553
466
|
step.failures++;
|
|
554
|
-
// Record circuit breaker failure
|
|
555
|
-
const cbConfig = step.definition.circuitBreaker;
|
|
556
|
-
if (cbConfig && TransactionOrchestrator.circuitBreaker) {
|
|
557
|
-
const cbKey = `${transaction.getFlow().modelId}:${step.definition.action}`;
|
|
558
|
-
void Promise.resolve(TransactionOrchestrator.circuitBreaker.recordFailure(cbKey, cbConfig)).catch(() => { });
|
|
559
|
-
}
|
|
560
467
|
if ((0, utils_1.isErrorLike)(error)) {
|
|
561
468
|
error = (0, utils_1.serializeError)(error);
|
|
562
469
|
}
|
|
@@ -667,31 +574,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
667
574
|
? types_1.DistributedTransactionEvent.COMPENSATE_STEP_FAILURE
|
|
668
575
|
: types_1.DistributedTransactionEvent.STEP_FAILURE;
|
|
669
576
|
transaction.emit(eventName, { step, transaction });
|
|
670
|
-
const durationMs = step.startedAt
|
|
671
|
-
? Date.now() - step.startedAt
|
|
672
|
-
: undefined;
|
|
673
|
-
TransactionOrchestrator.appendAuditEntry(transaction, eventName, step, {
|
|
674
|
-
durationMs,
|
|
675
|
-
errorMessage: (0, utils_1.isErrorLike)(error)
|
|
676
|
-
? error.message
|
|
677
|
-
: String(error?.message ?? "Unknown error"),
|
|
678
|
-
});
|
|
679
|
-
if (TransactionOrchestrator.metricsCollector &&
|
|
680
|
-
step.getStates().status === types_1.TransactionStepStatus.PERMANENT_FAILURE) {
|
|
681
|
-
const now = Date.now();
|
|
682
|
-
TransactionOrchestrator.metricsCollector.recordStepMetrics({
|
|
683
|
-
workflowId: transaction.getFlow().modelId,
|
|
684
|
-
transactionId: transaction.getFlow().transactionId,
|
|
685
|
-
stepId: step.id,
|
|
686
|
-
action: step.definition.action,
|
|
687
|
-
type: step.isCompensating() ? "compensate" : "invoke",
|
|
688
|
-
status: isTimeout ? "timeout" : "failure",
|
|
689
|
-
attempt: step.attempts,
|
|
690
|
-
startedAt: step.startedAt ?? now,
|
|
691
|
-
completedAt: now,
|
|
692
|
-
durationMs: durationMs ?? 0,
|
|
693
|
-
});
|
|
694
|
-
}
|
|
695
577
|
}
|
|
696
578
|
return {
|
|
697
579
|
stopExecution: result.stopExecution,
|
|
@@ -755,7 +637,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
755
637
|
step,
|
|
756
638
|
transaction,
|
|
757
639
|
});
|
|
758
|
-
TransactionOrchestrator.appendAuditEntry(transaction, types_1.DistributedTransactionEvent.STEP_BEGIN, step);
|
|
759
640
|
const isAsync = step.isCompensating()
|
|
760
641
|
? step.definition.compensateAsync
|
|
761
642
|
: step.definition.async;
|
|
@@ -805,52 +686,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
805
686
|
}
|
|
806
687
|
});
|
|
807
688
|
this.emit(types_1.DistributedTransactionEvent.FINISH, { transaction });
|
|
808
|
-
TransactionOrchestrator.appendAuditEntry(transaction, types_1.DistributedTransactionEvent.FINISH);
|
|
809
|
-
if (TransactionOrchestrator.metricsCollector) {
|
|
810
|
-
const flow = transaction.getFlow();
|
|
811
|
-
const now = Date.now();
|
|
812
|
-
const steps = Object.values(flow.steps).filter((s) => s.id !== TransactionOrchestrator.ROOT_STEP);
|
|
813
|
-
const stepMetricsList = [];
|
|
814
|
-
for (const s of steps) {
|
|
815
|
-
if (s.startedAt) {
|
|
816
|
-
stepMetricsList.push({
|
|
817
|
-
workflowId: flow.modelId,
|
|
818
|
-
transactionId: flow.transactionId,
|
|
819
|
-
stepId: s.id,
|
|
820
|
-
action: s.definition.action,
|
|
821
|
-
type: s.isCompensating() ? "compensate" : "invoke",
|
|
822
|
-
status: s.getStates().state === utils_1.TransactionStepState.SKIPPED
|
|
823
|
-
? "skipped"
|
|
824
|
-
: s.getStates().state === utils_1.TransactionStepState.TIMEOUT
|
|
825
|
-
? "timeout"
|
|
826
|
-
: s.getStates().state === utils_1.TransactionStepState.FAILED
|
|
827
|
-
? "failure"
|
|
828
|
-
: "success",
|
|
829
|
-
attempt: s.attempts,
|
|
830
|
-
startedAt: s.startedAt,
|
|
831
|
-
completedAt: now,
|
|
832
|
-
durationMs: now - s.startedAt,
|
|
833
|
-
});
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
const workflowMetrics = {
|
|
837
|
-
workflowId: flow.modelId,
|
|
838
|
-
transactionId: flow.transactionId,
|
|
839
|
-
status: flow.state === types_1.TransactionState.DONE
|
|
840
|
-
? "done"
|
|
841
|
-
: flow.state === types_1.TransactionState.REVERTED
|
|
842
|
-
? "reverted"
|
|
843
|
-
: "failed",
|
|
844
|
-
startedAt: flow.startedAt ?? now,
|
|
845
|
-
completedAt: now,
|
|
846
|
-
totalDurationMs: flow.startedAt ? now - flow.startedAt : 0,
|
|
847
|
-
stepCount: steps.length,
|
|
848
|
-
compensationCount: steps.filter((s) => s.isCompensating()).length,
|
|
849
|
-
retryTotal: steps.reduce((sum, s) => sum + Math.max(0, s.attempts - 1), 0),
|
|
850
|
-
steps: stepMetricsList,
|
|
851
|
-
};
|
|
852
|
-
TransactionOrchestrator.metricsCollector.recordWorkflowMetrics(workflowMetrics);
|
|
853
|
-
}
|
|
854
689
|
}
|
|
855
690
|
/**
|
|
856
691
|
* Prepare a step for execution by setting state and incrementing attempts
|
|
@@ -925,29 +760,8 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
925
760
|
: step.definition.compensateAsync),
|
|
926
761
|
idempotency_key: handlerArgs[2].metadata.idempotency_key,
|
|
927
762
|
};
|
|
928
|
-
const cbConfig = step.definition.circuitBreaker;
|
|
929
|
-
const cbKey = cbConfig
|
|
930
|
-
? `${flow.modelId}:${step.definition.action}`
|
|
931
|
-
: undefined;
|
|
932
763
|
const stepHandler = async () => {
|
|
933
|
-
|
|
934
|
-
if (cbConfig && cbKey) {
|
|
935
|
-
const cb = TransactionOrchestrator.circuitBreaker ??
|
|
936
|
-
(TransactionOrchestrator.circuitBreaker =
|
|
937
|
-
new circuit_breaker_1.InMemoryCircuitBreaker());
|
|
938
|
-
const state = typeof cb.maybeTransition === "function"
|
|
939
|
-
? cb.maybeTransition(cbKey, cbConfig)
|
|
940
|
-
: await cb.getState(cbKey);
|
|
941
|
-
if (state === "open") {
|
|
942
|
-
throw new errors_1.CircuitOpenError(step.definition.action);
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
const result = await transaction.handler(...handlerArgs);
|
|
946
|
-
// Record circuit breaker success
|
|
947
|
-
if (cbConfig && cbKey && TransactionOrchestrator.circuitBreaker) {
|
|
948
|
-
void Promise.resolve(TransactionOrchestrator.circuitBreaker.recordSuccess(cbKey)).catch(() => { });
|
|
949
|
-
}
|
|
950
|
-
return result;
|
|
764
|
+
return await transaction.handler(...handlerArgs);
|
|
951
765
|
};
|
|
952
766
|
// Return the appropriate promise based on tracing configuration
|
|
953
767
|
if (TransactionOrchestrator.traceStep) {
|
|
@@ -1095,31 +909,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
1095
909
|
if (transaction.hasFinished()) {
|
|
1096
910
|
return;
|
|
1097
911
|
}
|
|
1098
|
-
// Version checking and migration (4.5.1 / 4.5.2)
|
|
1099
|
-
const flow = transaction.getFlow();
|
|
1100
|
-
const storedVersion = flow.workflowVersion;
|
|
1101
|
-
const currentVersion = TransactionOrchestrator.computeDefinitionHash(this.definition);
|
|
1102
|
-
if (storedVersion && storedVersion !== currentVersion) {
|
|
1103
|
-
const policy = this.options?.versionPolicy ?? "lenient";
|
|
1104
|
-
// Try to apply migrations first
|
|
1105
|
-
if (this.options?.migrations?.length) {
|
|
1106
|
-
let version = storedVersion;
|
|
1107
|
-
for (const migration of this.options.migrations) {
|
|
1108
|
-
if (migration.fromVersion === version) {
|
|
1109
|
-
migration.migrate(flow);
|
|
1110
|
-
version = migration.toVersion;
|
|
1111
|
-
}
|
|
1112
|
-
}
|
|
1113
|
-
flow.workflowVersion = version;
|
|
1114
|
-
}
|
|
1115
|
-
// After migrations, check again
|
|
1116
|
-
const afterMigrationVersion = flow.workflowVersion ?? storedVersion;
|
|
1117
|
-
if (afterMigrationVersion !== currentVersion && policy === "strict") {
|
|
1118
|
-
throw new errors_1.WorkflowVersionMismatchError(currentVersion, afterMigrationVersion);
|
|
1119
|
-
}
|
|
1120
|
-
// Update version to current for lenient mode
|
|
1121
|
-
flow.workflowVersion = currentVersion;
|
|
1122
|
-
}
|
|
1123
912
|
const executeNext = async () => {
|
|
1124
913
|
const flow = transaction.getFlow();
|
|
1125
914
|
if (flow.state === types_1.TransactionState.NOT_STARTED) {
|
|
@@ -1132,11 +921,9 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
1132
921
|
await transaction.scheduleTransactionTimeout(transaction.getTimeout());
|
|
1133
922
|
}
|
|
1134
923
|
this.emit(types_1.DistributedTransactionEvent.BEGIN, { transaction });
|
|
1135
|
-
TransactionOrchestrator.appendAuditEntry(transaction, types_1.DistributedTransactionEvent.BEGIN);
|
|
1136
924
|
}
|
|
1137
925
|
else {
|
|
1138
926
|
this.emit(types_1.DistributedTransactionEvent.RESUME, { transaction });
|
|
1139
|
-
TransactionOrchestrator.appendAuditEntry(transaction, types_1.DistributedTransactionEvent.RESUME);
|
|
1140
927
|
}
|
|
1141
928
|
return await this.executeNext(transaction);
|
|
1142
929
|
};
|
|
@@ -1169,9 +956,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
1169
956
|
}
|
|
1170
957
|
flow.state = types_1.TransactionState.WAITING_TO_COMPENSATE;
|
|
1171
958
|
flow.cancelledAt = Date.now();
|
|
1172
|
-
if (options?.reason) {
|
|
1173
|
-
flow.cancelReason = options.reason;
|
|
1174
|
-
}
|
|
1175
959
|
await transaction.saveCheckpoint();
|
|
1176
960
|
if (options?.preventExecuteNext) {
|
|
1177
961
|
return;
|
|
@@ -1222,7 +1006,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
1222
1006
|
definition: this.definition,
|
|
1223
1007
|
steps,
|
|
1224
1008
|
_v: 0, // Initialize version to 0
|
|
1225
|
-
workflowVersion: TransactionOrchestrator.computeDefinitionHash(this.definition),
|
|
1226
1009
|
};
|
|
1227
1010
|
return flow;
|
|
1228
1011
|
}
|
|
@@ -1333,13 +1116,6 @@ class TransactionOrchestrator extends events_1.EventEmitter {
|
|
|
1333
1116
|
* @param flowMetadata - flow metadata which can include event group id for example
|
|
1334
1117
|
*/
|
|
1335
1118
|
async beginTransaction({ transactionId, handler, payload, flowMetadata, context, onLoad, }) {
|
|
1336
|
-
// Check rate limit for new transactions
|
|
1337
|
-
if (this.options?.rateLimit && TransactionOrchestrator.rateLimiter) {
|
|
1338
|
-
const allowed = await TransactionOrchestrator.rateLimiter.acquire(this.id, this.options.rateLimit);
|
|
1339
|
-
if (!allowed) {
|
|
1340
|
-
throw new errors_1.RateLimitExceededError(this.id);
|
|
1341
|
-
}
|
|
1342
|
-
}
|
|
1343
1119
|
const existingTransaction = await TransactionOrchestrator.loadTransactionById(this.id, transactionId);
|
|
1344
1120
|
let newTransaction = false;
|
|
1345
1121
|
let modelFlow;
|