@dbos-inc/dbos-enterprise 5.4.1-preview → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/src/auto_upgrade.d.ts +7 -20
- package/dist/src/auto_upgrade.d.ts.map +1 -1
- package/dist/src/auto_upgrade.js +8 -51
- package/dist/src/auto_upgrade.js.map +1 -1
- package/dist/src/cockroach.d.ts +7 -1
- package/dist/src/cockroach.d.ts.map +1 -1
- package/dist/src/cockroach.js +7 -1
- package/dist/src/cockroach.js.map +1 -1
- package/dist/src/conductor/conductor.d.ts +8 -5
- package/dist/src/conductor/conductor.d.ts.map +1 -1
- package/dist/src/conductor/conductor.js +768 -735
- package/dist/src/conductor/conductor.js.map +1 -1
- package/dist/src/conductor/protocol.d.ts +31 -7
- package/dist/src/conductor/protocol.d.ts.map +1 -1
- package/dist/src/conductor/protocol.js +84 -17
- package/dist/src/conductor/protocol.js.map +1 -1
- package/dist/src/export.d.ts +7 -0
- package/dist/src/export.d.ts.map +1 -1
- package/dist/src/export.js +19 -24
- package/dist/src/export.js.map +1 -1
- package/dist/src/external_storage.d.ts +23 -0
- package/dist/src/external_storage.d.ts.map +1 -0
- package/dist/src/external_storage.js +278 -0
- package/dist/src/external_storage.js.map +1 -0
- package/dist/src/external_stores.d.ts +36 -0
- package/dist/src/external_stores.d.ts.map +1 -0
- package/dist/src/external_stores.js +177 -0
- package/dist/src/external_stores.js.map +1 -0
- package/dist/src/fork.d.ts +7 -0
- package/dist/src/fork.d.ts.map +1 -1
- package/dist/src/fork.js +11 -3
- package/dist/src/fork.js.map +1 -1
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +17 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/locks.d.ts +20 -0
- package/dist/src/locks.d.ts.map +1 -0
- package/dist/src/locks.js +47 -0
- package/dist/src/locks.js.map +1 -0
- package/dist/src/observability.d.ts +8 -0
- package/dist/src/observability.d.ts.map +1 -1
- package/dist/src/observability.js +69 -44
- package/dist/src/observability.js.map +1 -1
- package/dist/src/retention.d.ts +18 -34
- package/dist/src/retention.d.ts.map +1 -1
- package/dist/src/retention.js +159 -177
- package/dist/src/retention.js.map +1 -1
- package/dist/src/sharding/index.d.ts +9 -0
- package/dist/src/sharding/index.d.ts.map +1 -0
- package/dist/src/sharding/index.js +13 -0
- package/dist/src/sharding/index.js.map +1 -0
- package/dist/src/sharding/migrations.d.ts +20 -0
- package/dist/src/sharding/migrations.d.ts.map +1 -0
- package/dist/src/sharding/migrations.js +544 -0
- package/dist/src/sharding/migrations.js.map +1 -0
- package/dist/src/sharding/schema.d.ts +9 -0
- package/dist/src/sharding/schema.d.ts.map +1 -0
- package/dist/src/sharding/schema.js +12 -0
- package/dist/src/sharding/schema.js.map +1 -0
- package/dist/src/sharding/sys_db.d.ts +104 -0
- package/dist/src/sharding/sys_db.d.ts.map +1 -0
- package/dist/src/sharding/sys_db.js +776 -0
- package/dist/src/sharding/sys_db.js.map +1 -0
- package/dist/src/suspend.d.ts +24 -0
- package/dist/src/suspend.d.ts.map +1 -0
- package/dist/src/suspend.js +110 -0
- package/dist/src/suspend.js.map +1 -0
- package/package.json +17 -4
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
8
|
+
"use strict";
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.S3ExternalStore = exports.FilesystemExternalStore = void 0;
|
|
14
|
+
const node_crypto_1 = require("node:crypto");
|
|
15
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
16
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
17
|
+
const error_1 = require("@dbos-inc/dbos-sdk/internal/error");
|
|
18
|
+
const FILE_SUFFIX = '@';
|
|
19
|
+
const UPPER = /[A-Z]/g;
|
|
20
|
+
const PUT_ATTEMPTS = 5;
|
|
21
|
+
function errnoCode(e) {
|
|
22
|
+
return e?.code;
|
|
23
|
+
}
|
|
24
|
+
class FilesystemExternalStore {
|
|
25
|
+
#root;
|
|
26
|
+
storeID;
|
|
27
|
+
constructor(root, options = {}) {
|
|
28
|
+
this.#root = node_path_1.default.resolve(root);
|
|
29
|
+
this.storeID = options.storeID ?? `file:${this.#root}`;
|
|
30
|
+
}
|
|
31
|
+
filePath(key) {
|
|
32
|
+
const name = key.replace(UPPER, (c) => `^${c.toLowerCase()}`);
|
|
33
|
+
const file = node_path_1.default.join(this.#root, name);
|
|
34
|
+
const relative = node_path_1.default.relative(this.#root, file);
|
|
35
|
+
if (relative === '' || relative === '..' || relative.startsWith(`..${node_path_1.default.sep}`) || node_path_1.default.isAbsolute(relative)) {
|
|
36
|
+
throw new error_1.DBOSError(`External object key ${JSON.stringify(key)} escapes the store's root`);
|
|
37
|
+
}
|
|
38
|
+
return file + FILE_SUFFIX;
|
|
39
|
+
}
|
|
40
|
+
async put(key, data) {
|
|
41
|
+
const file = this.filePath(key);
|
|
42
|
+
const dir = node_path_1.default.dirname(file);
|
|
43
|
+
let handle;
|
|
44
|
+
let temp;
|
|
45
|
+
for (let attempts = 1;; attempts++) {
|
|
46
|
+
try {
|
|
47
|
+
await promises_1.default.mkdir(dir, { recursive: true });
|
|
48
|
+
temp = node_path_1.default.join(dir, `.upload-${(0, node_crypto_1.randomUUID)()}`);
|
|
49
|
+
handle = await promises_1.default.open(temp, 'wx', 0o600);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
if (errnoCode(e) !== 'ENOENT' || attempts >= PUT_ATTEMPTS) {
|
|
54
|
+
throw e;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
try {
|
|
60
|
+
await handle.writeFile(data);
|
|
61
|
+
await handle.sync();
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
await handle.close();
|
|
65
|
+
}
|
|
66
|
+
await promises_1.default.rename(temp, file);
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
await promises_1.default.rm(temp, { force: true });
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async get(key) {
|
|
74
|
+
try {
|
|
75
|
+
return await promises_1.default.readFile(this.filePath(key));
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (errnoCode(e) === 'ENOENT') {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
throw e;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async delete(keys) {
|
|
85
|
+
for (const key of keys) {
|
|
86
|
+
const file = this.filePath(key);
|
|
87
|
+
await promises_1.default.rm(file, { force: true });
|
|
88
|
+
for (let parent = node_path_1.default.dirname(file); parent !== this.#root; parent = node_path_1.default.dirname(parent)) {
|
|
89
|
+
try {
|
|
90
|
+
await promises_1.default.rmdir(parent);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.FilesystemExternalStore = FilesystemExternalStore;
|
|
100
|
+
const S3_MISSING = new Set(['NoSuchKey', 'NotFound']);
|
|
101
|
+
function loadS3() {
|
|
102
|
+
try {
|
|
103
|
+
return {
|
|
104
|
+
s3: require('@aws-sdk/client-s3'),
|
|
105
|
+
storage: require('@aws-sdk/lib-storage'),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
throw new error_1.DBOSInitializationError('S3ExternalStore requires @aws-sdk/client-s3 and @aws-sdk/lib-storage. Install them with ' +
|
|
110
|
+
`\`npm install @aws-sdk/client-s3 @aws-sdk/lib-storage\`. Cause: ${e instanceof Error ? e.message.split('\n')[0] : String(e)}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
class S3ExternalStore {
|
|
114
|
+
static deleteBatchSize = 1000;
|
|
115
|
+
#client;
|
|
116
|
+
#bucket;
|
|
117
|
+
#prefix;
|
|
118
|
+
#sdk;
|
|
119
|
+
storeID;
|
|
120
|
+
constructor(client, bucket, options = {}) {
|
|
121
|
+
this.#sdk = loadS3();
|
|
122
|
+
this.#client = client;
|
|
123
|
+
this.#bucket = bucket;
|
|
124
|
+
this.#prefix = (options.prefix ?? '').replace(/^\/+|\/+$/g, '');
|
|
125
|
+
this.storeID = options.storeID ?? (this.#prefix ? `s3://${bucket}/${this.#prefix}` : `s3://${bucket}`);
|
|
126
|
+
}
|
|
127
|
+
#objectKey(key) {
|
|
128
|
+
return this.#prefix ? `${this.#prefix}/${key}` : key;
|
|
129
|
+
}
|
|
130
|
+
async put(key, data) {
|
|
131
|
+
const params = { Bucket: this.#bucket, Key: this.#objectKey(key), Body: data };
|
|
132
|
+
const upload = new this.#sdk.storage.Upload({ client: this.#client, params, leavePartsOnError: true });
|
|
133
|
+
try {
|
|
134
|
+
await upload.done();
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
if (upload.uploadId !== undefined) {
|
|
138
|
+
const abort = { Bucket: params.Bucket, Key: params.Key, UploadId: upload.uploadId };
|
|
139
|
+
await this.#client.send(new this.#sdk.s3.AbortMultipartUploadCommand(abort)).catch(() => undefined);
|
|
140
|
+
}
|
|
141
|
+
throw e;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async get(key) {
|
|
145
|
+
let response;
|
|
146
|
+
try {
|
|
147
|
+
response = await this.#client.send(new this.#sdk.s3.GetObjectCommand({ Bucket: this.#bucket, Key: this.#objectKey(key) }));
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
const error = e;
|
|
151
|
+
if (S3_MISSING.has(error.name ?? '') || error.$metadata?.httpStatusCode === 404) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
throw e;
|
|
155
|
+
}
|
|
156
|
+
if (response.Body === undefined) {
|
|
157
|
+
throw new error_1.DBOSError(`S3 returned no body for ${this.#objectKey(key)}`);
|
|
158
|
+
}
|
|
159
|
+
return await response.Body.transformToByteArray();
|
|
160
|
+
}
|
|
161
|
+
async delete(keys) {
|
|
162
|
+
const batchSize = S3ExternalStore.deleteBatchSize;
|
|
163
|
+
for (let i = 0; i < keys.length; i += batchSize) {
|
|
164
|
+
const batch = keys.slice(i, i + batchSize);
|
|
165
|
+
const response = await this.#client.send(new this.#sdk.s3.DeleteObjectsCommand({
|
|
166
|
+
Bucket: this.#bucket,
|
|
167
|
+
Delete: { Objects: batch.map((k) => ({ Key: this.#objectKey(k) })), Quiet: true },
|
|
168
|
+
}));
|
|
169
|
+
const errors = response.Errors ?? [];
|
|
170
|
+
if (errors.length > 0) {
|
|
171
|
+
throw new error_1.DBOSError(`S3 failed to delete ${errors.length} external objects, first: ${JSON.stringify(errors[0])}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.S3ExternalStore = S3ExternalStore;
|
|
177
|
+
//# sourceMappingURL=external_stores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external_stores.js","sourceRoot":"","sources":["../../src/external_stores.ts"],"names":[],"mappings":"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"}
|
package/dist/src/fork.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
1
8
|
import type { SystemDatabase } from '@dbos-inc/dbos-sdk/internal/system_database';
|
|
2
9
|
export declare function forkFromFailure(sysdb: SystemDatabase, workflowIDs: string[], options?: {
|
|
3
10
|
applicationVersion?: string;
|
package/dist/src/fork.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/fork.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/fork.ts"],"names":[],"mappings":";;;;;;;AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAElF,wBAAsB,eAAe,CACnC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE;IACP,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,OAAO,CAAC,MAAM,EAAE,CAAC,CA6DnB"}
|
package/dist/src/fork.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
1
8
|
"use strict";
|
|
2
|
-
// Fork workflows at a chosen step, or just before their last failure.
|
|
3
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
10
|
exports.forkFromFailure = void 0;
|
|
5
11
|
const node_crypto_1 = require("node:crypto");
|
|
12
|
+
const error_1 = require("@dbos-inc/dbos-sdk/internal/error");
|
|
6
13
|
async function forkFromFailure(sysdb, workflowIDs, options = {}) {
|
|
14
|
+
if (sysdb.sharded) {
|
|
15
|
+
throw new error_1.DBOSError('Fork from failure is not supported on a sharded system database');
|
|
16
|
+
}
|
|
7
17
|
const modes = [
|
|
8
18
|
options.fromLastFailure ?? false,
|
|
9
19
|
options.fromLastStep ?? false,
|
|
@@ -37,7 +47,6 @@ async function forkFromFailure(sysdb, workflowIDs, options = {}) {
|
|
|
37
47
|
GROUP BY workflow_uuid`;
|
|
38
48
|
}
|
|
39
49
|
else {
|
|
40
|
-
// fromStepName
|
|
41
50
|
query = `SELECT workflow_uuid, MAX(function_id) AS start_step
|
|
42
51
|
FROM "${sysdb.schemaName}".operation_outputs
|
|
43
52
|
WHERE workflow_uuid = ANY($1) AND function_name = $2
|
|
@@ -53,7 +62,6 @@ async function forkFromFailure(sysdb, workflowIDs, options = {}) {
|
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
|
-
// A workflow with no recorded steps has nothing to resume from, so restart it from the beginning.
|
|
57
65
|
startSteps = workflowIDs.map((wid) => startStepByID.get(wid) ?? 0);
|
|
58
66
|
}
|
|
59
67
|
const forkedIDs = workflowIDs.map(() => (0, node_crypto_1.randomUUID)());
|
package/dist/src/fork.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/fork.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/fork.ts"],"names":[],"mappings":";;;;;;;;;;AAEA,6CAAyC;AACzC,6DAA8D;AAGvD,KAAK,UAAU,eAAe,CACnC,KAAqB,EACrB,WAAqB,EACrB,UAQI,EAAE;IAEN,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAElB,MAAM,IAAI,iBAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,eAAe,IAAI,KAAK;QAChC,OAAO,CAAC,YAAY,IAAI,KAAK;QAC7B,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,OAAO,CAAC,YAAY,KAAK,SAAS;KACnC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,UAAoB,CAAC;IAEzB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAa,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,KAAK,GAAG;;;;;uBAKS,KAAK,CAAC,UAAU;;sCAED,CAAC;QACnC,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,KAAK,GAAG;uBACS,KAAK,CAAC,UAAU;;sCAED,CAAC;QACnC,CAAC;aAAM,CAAC;YAEN,KAAK,GAAG;uBACS,KAAK,CAAC,UAAU;;sCAED,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAgD,KAAK,EAAE,MAAM,CAAC,CAAC;QACpG,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,uBAAuB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QAED,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAzED,0CAyEC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
1
8
|
export { AutoUpgradePass } from './auto_upgrade';
|
|
2
9
|
export { ConductorWebsocket } from './conductor/conductor';
|
|
10
|
+
export { ExternalStorage } from './external_storage';
|
|
11
|
+
export { FilesystemExternalStore, S3ExternalStore, type S3ClientLike } from './external_stores';
|
|
12
|
+
export { ShardedSystemDatabase } from './sharding';
|
|
13
|
+
export { Suspend } from './suspend';
|
|
3
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
1
8
|
"use strict";
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConductorWebsocket = exports.AutoUpgradePass = void 0;
|
|
10
|
+
exports.Suspend = exports.ShardedSystemDatabase = exports.S3ExternalStore = exports.FilesystemExternalStore = exports.ExternalStorage = exports.ConductorWebsocket = exports.AutoUpgradePass = void 0;
|
|
4
11
|
var auto_upgrade_1 = require("./auto_upgrade");
|
|
5
12
|
Object.defineProperty(exports, "AutoUpgradePass", { enumerable: true, get: function () { return auto_upgrade_1.AutoUpgradePass; } });
|
|
6
13
|
var conductor_1 = require("./conductor/conductor");
|
|
7
14
|
Object.defineProperty(exports, "ConductorWebsocket", { enumerable: true, get: function () { return conductor_1.ConductorWebsocket; } });
|
|
15
|
+
var external_storage_1 = require("./external_storage");
|
|
16
|
+
Object.defineProperty(exports, "ExternalStorage", { enumerable: true, get: function () { return external_storage_1.ExternalStorage; } });
|
|
17
|
+
var external_stores_1 = require("./external_stores");
|
|
18
|
+
Object.defineProperty(exports, "FilesystemExternalStore", { enumerable: true, get: function () { return external_stores_1.FilesystemExternalStore; } });
|
|
19
|
+
Object.defineProperty(exports, "S3ExternalStore", { enumerable: true, get: function () { return external_stores_1.S3ExternalStore; } });
|
|
20
|
+
var sharding_1 = require("./sharding");
|
|
21
|
+
Object.defineProperty(exports, "ShardedSystemDatabase", { enumerable: true, get: function () { return sharding_1.ShardedSystemDatabase; } });
|
|
22
|
+
var suspend_1 = require("./suspend");
|
|
23
|
+
Object.defineProperty(exports, "Suspend", { enumerable: true, get: function () { return suspend_1.Suspend; } });
|
|
8
24
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AACxB,mDAA2D;AAAlD,+GAAA,kBAAkB,OAAA;AAC3B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,qDAAgG;AAAvF,0HAAA,uBAAuB,OAAA;AAAE,kHAAA,eAAe,OAAA;AACjD,uCAAmD;AAA1C,iHAAA,qBAAqB,OAAA;AAC9B,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
8
|
+
import type { PoolClient } from 'pg';
|
|
9
|
+
import type { GlobalLogger } from '@dbos-inc/dbos-sdk/internal/telemetry/logs';
|
|
10
|
+
export declare function lockKey(name: string): bigint;
|
|
11
|
+
export interface AdvisoryLock {
|
|
12
|
+
readonly acquired: boolean;
|
|
13
|
+
release(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
export declare function tryAdvisoryLock(client: PoolClient, key: bigint, options: {
|
|
16
|
+
name: string;
|
|
17
|
+
discard: boolean;
|
|
18
|
+
logger: GlobalLogger;
|
|
19
|
+
}): Promise<AdvisoryLock>;
|
|
20
|
+
//# sourceMappingURL=locks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../src/locks.ts"],"names":[],"mappings":";;;;;;;AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAG/E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAGD,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAChE,OAAO,CAAC,YAAY,CAAC,CAsCvB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
8
|
+
"use strict";
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.tryAdvisoryLock = exports.lockKey = void 0;
|
|
11
|
+
const system_database_1 = require("@dbos-inc/dbos-sdk/internal/system_database");
|
|
12
|
+
function lockKey(name) {
|
|
13
|
+
return (0, system_database_1.advisoryLockKey)(name);
|
|
14
|
+
}
|
|
15
|
+
exports.lockKey = lockKey;
|
|
16
|
+
async function tryAdvisoryLock(client, key, options) {
|
|
17
|
+
const { rows } = await client.query('SELECT pg_try_advisory_lock($1) AS granted', [
|
|
18
|
+
key.toString(),
|
|
19
|
+
]);
|
|
20
|
+
const granted = rows.map((row) => row.granted === true);
|
|
21
|
+
const acquired = granted.length > 0 && granted.every((g) => g);
|
|
22
|
+
const { name, discard, logger } = options;
|
|
23
|
+
return {
|
|
24
|
+
acquired,
|
|
25
|
+
release: async () => {
|
|
26
|
+
let closeSession = discard;
|
|
27
|
+
try {
|
|
28
|
+
if (granted.some((g) => g)) {
|
|
29
|
+
const { rows: released } = await client.query('SELECT pg_advisory_unlock($1) AS released', [key.toString()]);
|
|
30
|
+
if (acquired && !released.every((row) => row.released === true)) {
|
|
31
|
+
logger.warn(`Could not release the ${name} lock: this session no longer holds it. ` +
|
|
32
|
+
`${name.charAt(0).toUpperCase()}${name.slice(1)} will not proceed until the lock is released, ` +
|
|
33
|
+
'which happens when the holding backend closes. A transaction-pooling proxy in front of ' +
|
|
34
|
+
'Postgres causes this; run DBOS through a session-pooled or direct connection.');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
logger.warn(`Could not release the ${name} lock; closing its session instead: ${String(e)}`);
|
|
40
|
+
closeSession = true;
|
|
41
|
+
}
|
|
42
|
+
return closeSession;
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports.tryAdvisoryLock = tryAdvisoryLock;
|
|
47
|
+
//# sourceMappingURL=locks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../src/locks.ts"],"names":[],"mappings":";;;;;;;;;;AAGA,iFAA8E;AAI9E,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAFD,0BAEC;AAUM,KAAK,UAAU,eAAe,CACnC,MAAkB,EAClB,GAAW,EACX,OAAiE;IAGjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAuB,4CAA4C,EAAE;QACtG,GAAG,CAAC,QAAQ,EAAE;KACf,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,KAAK,IAAI,EAAE;YAElB,IAAI,YAAY,GAAG,OAAO,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAE3B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAC3C,2CAA2C,EAC3C,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CACjB,CAAC;oBACF,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;wBAEhE,MAAM,CAAC,IAAI,CACT,yBAAyB,IAAI,0CAA0C;4BACrE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gDAAgD;4BAC/F,yFAAyF;4BACzF,+EAA+E,CAClF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBAEX,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,uCAAuC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7F,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AA1CD,0CA0CC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
// Copyright (c) 2026 DBOS, Inc. All rights reserved.
|
|
2
|
+
//
|
|
3
|
+
// This file is part of Transact Enterprise, proprietary software licensed under the
|
|
4
|
+
// DBOS Conductor Software License: https://www.dbos.dev/conductor-license
|
|
5
|
+
// You may not use, copy, modify, or distribute this file except as that license permits.
|
|
6
|
+
// Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
|
|
7
|
+
// that gate it is a material breach of that license.
|
|
1
8
|
import { type SystemDatabase } from '@dbos-inc/dbos-sdk/internal/system_database';
|
|
2
9
|
export interface MetricData {
|
|
3
10
|
metricType: string;
|
|
@@ -66,6 +73,7 @@ export interface WorkflowAggregateRow {
|
|
|
66
73
|
}
|
|
67
74
|
export interface GetPendingWorkflowsOutput {
|
|
68
75
|
workflowUUID: string;
|
|
76
|
+
shardKey?: string;
|
|
69
77
|
}
|
|
70
78
|
export declare function getPendingWorkflows(sysdb: SystemDatabase, executorID: string, appVersion: string): Promise<GetPendingWorkflowsOutput[]>;
|
|
71
79
|
export declare function getAllEvents(sysdb: SystemDatabase, workflowID: string): Promise<Record<string, unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":";;;;;;;AAIA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAGvH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoCD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAkBtC;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAe9G;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CA0BpG;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CA4BpC;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA4LjC;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6H7B;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC,CA2CvB"}
|