@dbos-inc/dbos-sdk 0.8.45-preview → 0.8.46-preview
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/delete-app.js +1 -2
- package/dist/packages/dbos-cloud/applications/delete-app.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js +5 -7
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.js +1 -2
- package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/list-apps.js +1 -2
- package/dist/packages/dbos-cloud/applications/list-apps.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/register-app.js +1 -2
- package/dist/packages/dbos-cloud/applications/register-app.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/update-app.js +1 -2
- package/dist/packages/dbos-cloud/applications/update-app.js.map +1 -1
- package/dist/packages/dbos-cloud/cloudutils.d.ts +7 -0
- package/dist/packages/dbos-cloud/cloudutils.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/cloudutils.js +44 -3
- package/dist/packages/dbos-cloud/cloudutils.js.map +1 -1
- package/dist/packages/dbos-cloud/login.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/login.js +3 -4
- package/dist/packages/dbos-cloud/login.js.map +1 -1
- package/dist/packages/dbos-cloud/register.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/register.js +1 -2
- package/dist/packages/dbos-cloud/register.js.map +1 -1
- package/dist/packages/dbos-cloud/userdb.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/userdb.js +3 -4
- package/dist/packages/dbos-cloud/userdb.js.map +1 -1
- package/dist/src/context.d.ts +1 -0
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/httpServer/server.d.ts +2 -1
- package/dist/src/httpServer/server.d.ts.map +1 -1
- package/dist/src/testing/testing_runtime.d.ts +2 -1
- package/dist/src/testing/testing_runtime.d.ts.map +1 -1
- package/dist/src/utils.d.ts +0 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +3 -12
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/delete-app.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/delete-app.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/deploy-app-code.js +5 -7
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/get-app-logs.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/get-app-logs.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/list-apps.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/list-apps.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/register-app.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/register-app.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/register-app.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/update-app.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/update-app.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/applications/update-app.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/cloudutils.d.ts +7 -0
- package/packages/dbos-cloud/dist/packages/dbos-cloud/cloudutils.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/cloudutils.js +44 -3
- package/packages/dbos-cloud/dist/packages/dbos-cloud/cloudutils.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/login.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/login.js +3 -4
- package/packages/dbos-cloud/dist/packages/dbos-cloud/login.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/register.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/register.js +1 -2
- package/packages/dbos-cloud/dist/packages/dbos-cloud/register.js.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/userdb.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/packages/dbos-cloud/userdb.js +3 -4
- package/packages/dbos-cloud/dist/packages/dbos-cloud/userdb.js.map +1 -1
- package/packages/dbos-cloud/dist/src/utils.d.ts +0 -1
- package/packages/dbos-cloud/dist/src/utils.d.ts.map +1 -1
- package/packages/dbos-cloud/dist/src/utils.js +3 -12
- package/packages/dbos-cloud/dist/src/utils.js.map +1 -1
- package/packages/dbos-cloud/package.json +1 -1
- package/packages/dbos-openapi/package.json +1 -1
- package/packages/dbos-cloud/dist/schemas/system_db_schema.d.ts +0 -34
- package/packages/dbos-cloud/dist/schemas/system_db_schema.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/schemas/system_db_schema.js +0 -77
- package/packages/dbos-cloud/dist/schemas/system_db_schema.js.map +0 -1
- package/packages/dbos-cloud/dist/schemas/user_db_schema.d.ts +0 -11
- package/packages/dbos-cloud/dist/schemas/user_db_schema.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/schemas/user_db_schema.js +0 -16
- package/packages/dbos-cloud/dist/schemas/user_db_schema.js.map +0 -1
- package/packages/dbos-cloud/dist/src/communicator.d.ts +0 -25
- package/packages/dbos-cloud/dist/src/communicator.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/communicator.js +0 -26
- package/packages/dbos-cloud/dist/src/communicator.js.map +0 -1
- package/packages/dbos-cloud/dist/src/context.d.ts +0 -64
- package/packages/dbos-cloud/dist/src/context.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/context.js +0 -96
- package/packages/dbos-cloud/dist/src/context.js.map +0 -1
- package/packages/dbos-cloud/dist/src/data_validation.d.ts +0 -3
- package/packages/dbos-cloud/dist/src/data_validation.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/data_validation.js +0 -168
- package/packages/dbos-cloud/dist/src/data_validation.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-executor.d.ts +0 -102
- package/packages/dbos-cloud/dist/src/dbos-executor.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-executor.js +0 -631
- package/packages/dbos-cloud/dist/src/dbos-executor.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/applicationVersion.d.ts +0 -3
- package/packages/dbos-cloud/dist/src/dbos-runtime/applicationVersion.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/applicationVersion.js +0 -13
- package/packages/dbos-cloud/dist/src/dbos-runtime/applicationVersion.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/cli.d.ts +0 -8
- package/packages/dbos-cloud/dist/src/dbos-runtime/cli.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/cli.js +0 -61
- package/packages/dbos-cloud/dist/src/dbos-runtime/cli.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/config.d.ts +0 -29
- package/packages/dbos-cloud/dist/src/dbos-runtime/config.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/config.js +0 -111
- package/packages/dbos-cloud/dist/src/dbos-runtime/config.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/debug.d.ts +0 -4
- package/packages/dbos-cloud/dist/src/dbos-runtime/debug.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/debug.js +0 -21
- package/packages/dbos-cloud/dist/src/dbos-runtime/debug.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/init.d.ts +0 -7
- package/packages/dbos-cloud/dist/src/dbos-runtime/init.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/init.js +0 -51
- package/packages/dbos-cloud/dist/src/dbos-runtime/init.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/migrate.d.ts +0 -3
- package/packages/dbos-cloud/dist/src/dbos-runtime/migrate.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/migrate.js +0 -175
- package/packages/dbos-cloud/dist/src/dbos-runtime/migrate.js.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/runtime.d.ts +0 -28
- package/packages/dbos-cloud/dist/src/dbos-runtime/runtime.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/dbos-runtime/runtime.js +0 -95
- package/packages/dbos-cloud/dist/src/dbos-runtime/runtime.js.map +0 -1
- package/packages/dbos-cloud/dist/src/debugger/debug_workflow.d.ts +0 -38
- package/packages/dbos-cloud/dist/src/debugger/debug_workflow.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/debugger/debug_workflow.js +0 -211
- package/packages/dbos-cloud/dist/src/debugger/debug_workflow.js.map +0 -1
- package/packages/dbos-cloud/dist/src/decorators.d.ts +0 -118
- package/packages/dbos-cloud/dist/src/decorators.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/decorators.js +0 -467
- package/packages/dbos-cloud/dist/src/decorators.js.map +0 -1
- package/packages/dbos-cloud/dist/src/error.d.ts +0 -47
- package/packages/dbos-cloud/dist/src/error.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/error.js +0 -171
- package/packages/dbos-cloud/dist/src/error.js.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/handler.d.ts +0 -54
- package/packages/dbos-cloud/dist/src/httpServer/handler.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/handler.js +0 -175
- package/packages/dbos-cloud/dist/src/httpServer/handler.js.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/handlerTypes.d.ts +0 -11
- package/packages/dbos-cloud/dist/src/httpServer/handlerTypes.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/handlerTypes.js +0 -19
- package/packages/dbos-cloud/dist/src/httpServer/handlerTypes.js.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/middleware.d.ts +0 -56
- package/packages/dbos-cloud/dist/src/httpServer/middleware.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/middleware.js +0 -57
- package/packages/dbos-cloud/dist/src/httpServer/middleware.js.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/server.d.ts +0 -45
- package/packages/dbos-cloud/dist/src/httpServer/server.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/httpServer/server.js +0 -253
- package/packages/dbos-cloud/dist/src/httpServer/server.js.map +0 -1
- package/packages/dbos-cloud/dist/src/system_database.d.ts +0 -91
- package/packages/dbos-cloud/dist/src/system_database.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/system_database.js +0 -462
- package/packages/dbos-cloud/dist/src/system_database.js.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/collector.d.ts +0 -16
- package/packages/dbos-cloud/dist/src/telemetry/collector.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/collector.js +0 -65
- package/packages/dbos-cloud/dist/src/telemetry/collector.js.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/exporters.d.ts +0 -15
- package/packages/dbos-cloud/dist/src/telemetry/exporters.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/exporters.js +0 -59
- package/packages/dbos-cloud/dist/src/telemetry/exporters.js.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/index.d.ts +0 -11
- package/packages/dbos-cloud/dist/src/telemetry/index.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/index.js +0 -19
- package/packages/dbos-cloud/dist/src/telemetry/index.js.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/logs.d.ts +0 -47
- package/packages/dbos-cloud/dist/src/telemetry/logs.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/logs.js +0 -195
- package/packages/dbos-cloud/dist/src/telemetry/logs.js.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/traces.d.ts +0 -14
- package/packages/dbos-cloud/dist/src/telemetry/traces.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/telemetry/traces.js +0 -52
- package/packages/dbos-cloud/dist/src/telemetry/traces.js.map +0 -1
- package/packages/dbos-cloud/dist/src/transaction.d.ts +0 -29
- package/packages/dbos-cloud/dist/src/transaction.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/transaction.js +0 -27
- package/packages/dbos-cloud/dist/src/transaction.js.map +0 -1
- package/packages/dbos-cloud/dist/src/user_database.d.ts +0 -132
- package/packages/dbos-cloud/dist/src/user_database.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/user_database.js +0 -332
- package/packages/dbos-cloud/dist/src/user_database.js.map +0 -1
- package/packages/dbos-cloud/dist/src/workflow.d.ts +0 -195
- package/packages/dbos-cloud/dist/src/workflow.d.ts.map +0 -1
- package/packages/dbos-cloud/dist/src/workflow.js +0 -498
- package/packages/dbos-cloud/dist/src/workflow.js.map +0 -1
@@ -1,498 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.RetrievedHandle = exports.InvokedHandle = exports.WorkflowContextImpl = exports.StatusString = void 0;
|
4
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
5
|
-
const dbos_executor_1 = require("./dbos-executor");
|
6
|
-
const transaction_1 = require("./transaction");
|
7
|
-
const communicator_1 = require("./communicator");
|
8
|
-
const error_1 = require("./error");
|
9
|
-
const serialize_error_1 = require("serialize-error");
|
10
|
-
const utils_1 = require("./utils");
|
11
|
-
const api_1 = require("@opentelemetry/api");
|
12
|
-
const context_1 = require("./context");
|
13
|
-
const decorators_1 = require("./decorators");
|
14
|
-
exports.StatusString = {
|
15
|
-
PENDING: "PENDING",
|
16
|
-
SUCCESS: "SUCCESS",
|
17
|
-
ERROR: "ERROR",
|
18
|
-
};
|
19
|
-
class WorkflowContextImpl extends context_1.DBOSContextImpl {
|
20
|
-
workflowConfig;
|
21
|
-
presetUUID;
|
22
|
-
functionID = 0;
|
23
|
-
#dbosExec;
|
24
|
-
resultBuffer = new Map();
|
25
|
-
isTempWorkflow;
|
26
|
-
// For temporary workflows
|
27
|
-
tempWfOperationType; // "transaction", "external", or "send"
|
28
|
-
tempWfOperationName; // The name of that operation.
|
29
|
-
constructor(dbosExec, parentCtx, workflowUUID, workflowConfig, workflowName, presetUUID) {
|
30
|
-
const span = dbosExec.tracer.startSpan(workflowName, {
|
31
|
-
status: exports.StatusString.PENDING,
|
32
|
-
operationUUID: workflowUUID,
|
33
|
-
operationType: dbos_executor_1.OperationType.WORKFLOW,
|
34
|
-
authenticatedUser: parentCtx?.authenticatedUser ?? "",
|
35
|
-
authenticatedRoles: parentCtx?.authenticatedRoles ?? [],
|
36
|
-
assumedRole: parentCtx?.assumedRole ?? "",
|
37
|
-
executorID: parentCtx?.executorID,
|
38
|
-
});
|
39
|
-
super(workflowName, span, dbosExec.logger, parentCtx);
|
40
|
-
this.workflowConfig = workflowConfig;
|
41
|
-
this.presetUUID = presetUUID;
|
42
|
-
this.workflowUUID = workflowUUID;
|
43
|
-
this.#dbosExec = dbosExec;
|
44
|
-
this.isTempWorkflow = dbos_executor_1.DBOSExecutor.tempWorkflowName === workflowName;
|
45
|
-
this.tempWfOperationType = "";
|
46
|
-
this.tempWfOperationName = "";
|
47
|
-
if (dbosExec.config.application) {
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
49
|
-
this.applicationConfig = dbosExec.config.application;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
functionIDGetIncrement() {
|
53
|
-
return this.functionID++;
|
54
|
-
}
|
55
|
-
/**
|
56
|
-
* Retrieve the transaction snapshot information of the current transaction
|
57
|
-
*/
|
58
|
-
async retrieveSnapshot(client) {
|
59
|
-
const rows = await this.#dbosExec.userDatabase.queryWithClient(client, "SELECT pg_current_snapshot()::text as txn_snapshot;");
|
60
|
-
return rows[0].txn_snapshot;
|
61
|
-
}
|
62
|
-
/**
|
63
|
-
* Check if an operation has already executed in a workflow.
|
64
|
-
* If it previously executed successfully, return its output.
|
65
|
-
* If it previously executed and threw an error, throw that error.
|
66
|
-
* Otherwise, return DBOSNull.
|
67
|
-
* Also return the transaction snapshot information of this current transaction.
|
68
|
-
*/
|
69
|
-
async checkExecution(client, funcID) {
|
70
|
-
// Note: we read the current snapshot, not the recorded one!
|
71
|
-
const rows = await this.#dbosExec.userDatabase.queryWithClient(client, "(SELECT output, error, txn_snapshot, true as recorded FROM dbos.transaction_outputs WHERE workflow_uuid=$1 AND function_id=$2 UNION ALL SELECT null as output, null as error, pg_current_snapshot()::text as txn_snapshot, false as recorded) ORDER BY recorded", this.workflowUUID, funcID);
|
72
|
-
if (rows.length === 0 || rows.length > 2) {
|
73
|
-
this.logger.error("Unexpected! This should never happen. Returned rows: " + rows.toString());
|
74
|
-
throw new error_1.DBOSError("This should never happen. Returned rows: " + rows.toString());
|
75
|
-
}
|
76
|
-
const res = {
|
77
|
-
output: dbos_executor_1.dbosNull,
|
78
|
-
txn_snapshot: ""
|
79
|
-
};
|
80
|
-
// recorded=false row will be first because we used ORDER BY.
|
81
|
-
res.txn_snapshot = rows[0].txn_snapshot;
|
82
|
-
if (rows.length === 2) {
|
83
|
-
if (JSON.parse(rows[1].error) !== null) {
|
84
|
-
throw (0, serialize_error_1.deserializeError)(JSON.parse(rows[1].error));
|
85
|
-
}
|
86
|
-
else {
|
87
|
-
res.output = JSON.parse(rows[1].output);
|
88
|
-
}
|
89
|
-
}
|
90
|
-
return res;
|
91
|
-
}
|
92
|
-
/**
|
93
|
-
* Write all entries in the workflow result buffer to the database.
|
94
|
-
* If it encounters a primary key error, this indicates a concurrent execution with the same UUID, so throw an DBOSError.
|
95
|
-
*/
|
96
|
-
async flushResultBuffer(client) {
|
97
|
-
const funcIDs = Array.from(this.resultBuffer.keys());
|
98
|
-
if (funcIDs.length === 0) {
|
99
|
-
return;
|
100
|
-
}
|
101
|
-
funcIDs.sort();
|
102
|
-
try {
|
103
|
-
let sqlStmt = "INSERT INTO dbos.transaction_outputs (workflow_uuid, function_id, output, error, txn_id, txn_snapshot) VALUES ";
|
104
|
-
let paramCnt = 1;
|
105
|
-
const values = [];
|
106
|
-
for (const funcID of funcIDs) {
|
107
|
-
// Capture output and also transaction snapshot information.
|
108
|
-
// Initially, no txn_id because no queries executed.
|
109
|
-
const recorded = this.resultBuffer.get(funcID);
|
110
|
-
const output = recorded.output;
|
111
|
-
const txnSnapshot = recorded.txn_snapshot;
|
112
|
-
if (paramCnt > 1) {
|
113
|
-
sqlStmt += ", ";
|
114
|
-
}
|
115
|
-
sqlStmt += `($${paramCnt++}, $${paramCnt++}, $${paramCnt++}, $${paramCnt++}, null, $${paramCnt++})`;
|
116
|
-
values.push(this.workflowUUID, funcID, JSON.stringify(output), JSON.stringify(null), txnSnapshot);
|
117
|
-
}
|
118
|
-
this.logger.debug(sqlStmt);
|
119
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
120
|
-
await this.#dbosExec.userDatabase.queryWithClient(client, sqlStmt, ...values);
|
121
|
-
}
|
122
|
-
catch (error) {
|
123
|
-
if (this.#dbosExec.userDatabase.isKeyConflictError(error)) {
|
124
|
-
// Serialization and primary key conflict (Postgres).
|
125
|
-
throw new error_1.DBOSWorkflowConflictUUIDError(this.workflowUUID);
|
126
|
-
}
|
127
|
-
else {
|
128
|
-
throw error;
|
129
|
-
}
|
130
|
-
}
|
131
|
-
}
|
132
|
-
/**
|
133
|
-
* Buffer a placeholder value to guard an operation against concurrent executions with the same UUID.
|
134
|
-
*/
|
135
|
-
guardOperation(funcID, txnSnapshot) {
|
136
|
-
const guardOutput = {
|
137
|
-
output: null,
|
138
|
-
txn_snapshot: txnSnapshot,
|
139
|
-
};
|
140
|
-
this.resultBuffer.set(funcID, guardOutput);
|
141
|
-
}
|
142
|
-
/**
|
143
|
-
* Write a guarded operation's output to the database.
|
144
|
-
*/
|
145
|
-
async recordGuardedOutput(client, funcID, output) {
|
146
|
-
const serialOutput = JSON.stringify(output);
|
147
|
-
const rows = await this.#dbosExec.userDatabase.queryWithClient(client, "UPDATE dbos.transaction_outputs SET output=$1, txn_id=(select pg_current_xact_id_if_assigned()::text) WHERE workflow_uuid=$2 AND function_id=$3 RETURNING txn_id;", serialOutput, this.workflowUUID, funcID);
|
148
|
-
return rows[0].txn_id; // Must have a transaction ID because we inserted the guard before.
|
149
|
-
}
|
150
|
-
/**
|
151
|
-
* Write an unguarded operation's output to the database.
|
152
|
-
*/
|
153
|
-
async recordUnguardedOutput(client, funcID, output) {
|
154
|
-
const serialOutput = JSON.stringify(output);
|
155
|
-
const rows = await this.#dbosExec.userDatabase.queryWithClient(client, "INSERT INTO dbos.transaction_outputs (workflow_uuid, function_id, output, txn_id, txn_snapshot) VALUES ($1, $2, $3, (select pg_current_xact_id_if_assigned()::text), (select pg_current_snapshot()::text)) RETURNING txn_id;", this.workflowUUID, funcID, serialOutput);
|
156
|
-
return rows[0].txn_id;
|
157
|
-
}
|
158
|
-
/**
|
159
|
-
* Record an error in a guarded operation to the database.
|
160
|
-
*/
|
161
|
-
async recordGuardedError(client, funcID, err) {
|
162
|
-
const serialErr = JSON.stringify((0, serialize_error_1.serializeError)(err));
|
163
|
-
await this.#dbosExec.userDatabase.queryWithClient(client, "UPDATE dbos.transaction_outputs SET error=$1 WHERE workflow_uuid=$2 AND function_id=$3;", serialErr, this.workflowUUID, funcID);
|
164
|
-
}
|
165
|
-
/**
|
166
|
-
* Record an error in an unguarded operation to the database.
|
167
|
-
*/
|
168
|
-
async recordUnguardedError(client, funcID, err) {
|
169
|
-
const serialErr = JSON.stringify((0, serialize_error_1.serializeError)(err));
|
170
|
-
const rows = await this.#dbosExec.userDatabase.queryWithClient(client, "INSERT INTO dbos.transaction_outputs (workflow_uuid, function_id, error, txn_id, txn_snapshot) VALUES ($1, $2, $3, (select pg_current_xact_id_if_assigned()::text), (select pg_current_snapshot()::text)) RETURNING txn_id;", this.workflowUUID, funcID, serialErr);
|
171
|
-
return rows[0].txn_id;
|
172
|
-
}
|
173
|
-
/**
|
174
|
-
* Invoke another workflow as its child workflow and return a workflow handle.
|
175
|
-
* The child workflow is guaranteed to be executed exactly once, even if the workflow is retried with the same UUID.
|
176
|
-
* We pass in itself as a parent context adn assign the child workflow with a deterministic UUID "this.workflowUUID-functionID", which appends a function ID to its own UUID.
|
177
|
-
* We also pass in its own workflowUUID and function ID so the invoked handle is deterministic.
|
178
|
-
*/
|
179
|
-
async childWorkflow(wf, ...args) {
|
180
|
-
// Note: cannot use invoke for childWorkflow because of potential recursive types on the workflow itself.
|
181
|
-
const funcId = this.functionIDGetIncrement();
|
182
|
-
const childUUID = this.workflowUUID + "-" + funcId;
|
183
|
-
return this.#dbosExec.internalWorkflow(wf, { parentCtx: this, workflowUUID: childUUID }, this.workflowUUID, funcId, ...args);
|
184
|
-
}
|
185
|
-
/**
|
186
|
-
* Execute a transactional function.
|
187
|
-
* The transaction is guaranteed to execute exactly once, even if the workflow is retried with the same UUID.
|
188
|
-
* If the transaction encounters a Postgres serialization error, retry it.
|
189
|
-
* If it encounters any other error, throw it.
|
190
|
-
*/
|
191
|
-
async transaction(txn, ...args) {
|
192
|
-
const txnInfo = this.#dbosExec.transactionInfoMap.get(txn.name);
|
193
|
-
if (txnInfo === undefined) {
|
194
|
-
throw new error_1.DBOSNotRegisteredError(txn.name);
|
195
|
-
}
|
196
|
-
const readOnly = txnInfo.config.readOnly ?? false;
|
197
|
-
let retryWaitMillis = 1;
|
198
|
-
const backoffFactor = 2;
|
199
|
-
const funcId = this.functionIDGetIncrement();
|
200
|
-
const span = this.#dbosExec.tracer.startSpan(txn.name, {
|
201
|
-
operationUUID: this.workflowUUID,
|
202
|
-
operationType: dbos_executor_1.OperationType.TRANSACTION,
|
203
|
-
authenticatedUser: this.authenticatedUser,
|
204
|
-
assumedRole: this.assumedRole,
|
205
|
-
authenticatedRoles: this.authenticatedRoles,
|
206
|
-
readOnly: readOnly,
|
207
|
-
isolationLevel: txnInfo.config.isolationLevel,
|
208
|
-
executorID: this.executorID,
|
209
|
-
}, this.span);
|
210
|
-
// eslint-disable-next-line no-constant-condition
|
211
|
-
while (true) {
|
212
|
-
const wrappedTransaction = async (client) => {
|
213
|
-
const tCtxt = new transaction_1.TransactionContextImpl(this.#dbosExec.userDatabase.getName(), client, this, span, this.#dbosExec.logger, funcId, txn.name);
|
214
|
-
// If the UUID is preset, it is possible this execution previously happened. Check, and return its original result if it did.
|
215
|
-
// Note: It is possible to retrieve a generated ID from a workflow handle, run a concurrent execution, and cause trouble for yourself. We recommend against this.
|
216
|
-
let txn_snapshot;
|
217
|
-
if (this.presetUUID) {
|
218
|
-
const check = await this.checkExecution(client, funcId);
|
219
|
-
txn_snapshot = check.txn_snapshot;
|
220
|
-
if (check.output !== dbos_executor_1.dbosNull) {
|
221
|
-
tCtxt.span.setAttribute("cached", true);
|
222
|
-
tCtxt.span.setStatus({ code: api_1.SpanStatusCode.OK });
|
223
|
-
this.#dbosExec.tracer.endSpan(tCtxt.span);
|
224
|
-
return check.output;
|
225
|
-
}
|
226
|
-
}
|
227
|
-
else if (readOnly) {
|
228
|
-
// Collect snapshot information for read-only transactions, if not already collected above
|
229
|
-
txn_snapshot = await this.retrieveSnapshot(client);
|
230
|
-
}
|
231
|
-
// If the UUID is preset, set a guard to block concurrent executions with the same UUID.
|
232
|
-
if (this.presetUUID) {
|
233
|
-
this.guardOperation(funcId, txn_snapshot);
|
234
|
-
}
|
235
|
-
// For non-read-only transactions, flush the result buffer, including the guard if present.
|
236
|
-
if (!readOnly) {
|
237
|
-
await this.flushResultBuffer(client);
|
238
|
-
}
|
239
|
-
// Execute the user's transaction.
|
240
|
-
const result = await txn(tCtxt, ...args);
|
241
|
-
// Record the execution, commit, and return.
|
242
|
-
if (readOnly) {
|
243
|
-
// Buffer the output of read-only transactions instead of synchronously writing it.
|
244
|
-
const guardOutput = {
|
245
|
-
output: result,
|
246
|
-
txn_snapshot: txn_snapshot,
|
247
|
-
};
|
248
|
-
this.resultBuffer.set(funcId, guardOutput);
|
249
|
-
}
|
250
|
-
else {
|
251
|
-
// Synchronously record the output of write transactions and obtain the transaction ID.
|
252
|
-
const pg_txn_id = this.presetUUID ? await this.recordGuardedOutput(client, funcId, result) : await this.recordUnguardedOutput(client, funcId, result);
|
253
|
-
tCtxt.span.setAttribute("pg_txn_id", pg_txn_id);
|
254
|
-
this.resultBuffer.clear();
|
255
|
-
}
|
256
|
-
return result;
|
257
|
-
};
|
258
|
-
try {
|
259
|
-
const result = await this.#dbosExec.userDatabase.transaction(wrappedTransaction, txnInfo.config);
|
260
|
-
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
261
|
-
return result;
|
262
|
-
}
|
263
|
-
catch (err) {
|
264
|
-
if (this.#dbosExec.userDatabase.isRetriableTransactionError(err)) {
|
265
|
-
// serialization_failure in PostgreSQL
|
266
|
-
span.addEvent("TXN SERIALIZATION FAILURE", { retryWaitMillis });
|
267
|
-
// Retry serialization failures.
|
268
|
-
await (0, utils_1.sleep)(retryWaitMillis);
|
269
|
-
retryWaitMillis *= backoffFactor;
|
270
|
-
continue;
|
271
|
-
}
|
272
|
-
// Record and throw other errors.
|
273
|
-
const e = err;
|
274
|
-
await this.#dbosExec.userDatabase.transaction(async (client) => {
|
275
|
-
await this.flushResultBuffer(client);
|
276
|
-
this.presetUUID ? await this.recordGuardedError(client, funcId, e) : await this.recordUnguardedError(client, funcId, e);
|
277
|
-
}, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted });
|
278
|
-
this.resultBuffer.clear();
|
279
|
-
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: e.message });
|
280
|
-
throw err;
|
281
|
-
}
|
282
|
-
finally {
|
283
|
-
this.#dbosExec.tracer.endSpan(span);
|
284
|
-
}
|
285
|
-
}
|
286
|
-
}
|
287
|
-
/**
|
288
|
-
* Execute a communicator function.
|
289
|
-
* If it encounters any error, retry according to its configured retry policy until the maximum number of attempts is reached, then throw an DBOSError.
|
290
|
-
* The communicator may execute many times, but once it is complete, it will not re-execute.
|
291
|
-
*/
|
292
|
-
async external(commFn, ...args) {
|
293
|
-
const commInfo = this.#dbosExec.communicatorInfoMap.get(commFn.name);
|
294
|
-
if (commInfo === undefined) {
|
295
|
-
throw new error_1.DBOSNotRegisteredError(commFn.name);
|
296
|
-
}
|
297
|
-
const funcID = this.functionIDGetIncrement();
|
298
|
-
const span = this.#dbosExec.tracer.startSpan(commFn.name, {
|
299
|
-
operationUUID: this.workflowUUID,
|
300
|
-
operationType: dbos_executor_1.OperationType.COMMUNICATOR,
|
301
|
-
authenticatedUser: this.authenticatedUser,
|
302
|
-
assumedRole: this.assumedRole,
|
303
|
-
authenticatedRoles: this.authenticatedRoles,
|
304
|
-
executorID: this.executorID,
|
305
|
-
retriesAllowed: commInfo.config.retriesAllowed,
|
306
|
-
intervalSeconds: commInfo.config.intervalSeconds,
|
307
|
-
maxAttempts: commInfo.config.maxAttempts,
|
308
|
-
backoffRate: commInfo.config.backoffRate,
|
309
|
-
}, this.span);
|
310
|
-
const ctxt = new communicator_1.CommunicatorContextImpl(this, funcID, span, this.#dbosExec.logger, commInfo.config, commFn.name);
|
311
|
-
await this.#dbosExec.userDatabase.transaction(async (client) => {
|
312
|
-
await this.flushResultBuffer(client);
|
313
|
-
}, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted });
|
314
|
-
this.resultBuffer.clear();
|
315
|
-
// Check if this execution previously happened, returning its original result if it did.
|
316
|
-
const check = await this.#dbosExec.systemDatabase.checkOperationOutput(this.workflowUUID, ctxt.functionID);
|
317
|
-
if (check !== dbos_executor_1.dbosNull) {
|
318
|
-
ctxt.span.setAttribute("cached", true);
|
319
|
-
ctxt.span.setStatus({ code: api_1.SpanStatusCode.OK });
|
320
|
-
this.#dbosExec.tracer.endSpan(ctxt.span);
|
321
|
-
return check;
|
322
|
-
}
|
323
|
-
// Execute the communicator function. If it throws an exception, retry with exponential backoff.
|
324
|
-
// After reaching the maximum number of retries, throw an DBOSError.
|
325
|
-
let result = dbos_executor_1.dbosNull;
|
326
|
-
let err = dbos_executor_1.dbosNull;
|
327
|
-
if (ctxt.retriesAllowed) {
|
328
|
-
let numAttempts = 0;
|
329
|
-
let intervalSeconds = ctxt.intervalSeconds;
|
330
|
-
while (result === dbos_executor_1.dbosNull && numAttempts++ < ctxt.maxAttempts) {
|
331
|
-
try {
|
332
|
-
result = await commFn(ctxt, ...args);
|
333
|
-
}
|
334
|
-
catch (error) {
|
335
|
-
if (numAttempts < ctxt.maxAttempts) {
|
336
|
-
// Sleep for an interval, then increase the interval by backoffRate.
|
337
|
-
await (0, utils_1.sleep)(intervalSeconds);
|
338
|
-
intervalSeconds *= ctxt.backoffRate;
|
339
|
-
}
|
340
|
-
ctxt.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
|
341
|
-
this.#dbosExec.tracer.endSpan(ctxt.span);
|
342
|
-
}
|
343
|
-
}
|
344
|
-
}
|
345
|
-
else {
|
346
|
-
try {
|
347
|
-
result = await commFn(ctxt, ...args);
|
348
|
-
}
|
349
|
-
catch (error) {
|
350
|
-
err = error;
|
351
|
-
ctxt.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
|
352
|
-
this.#dbosExec.tracer.endSpan(ctxt.span);
|
353
|
-
}
|
354
|
-
}
|
355
|
-
// `result` can only be dbosNull when the communicator timed out
|
356
|
-
if (result === dbos_executor_1.dbosNull) {
|
357
|
-
// Record the error, then throw it.
|
358
|
-
err = err === dbos_executor_1.dbosNull ? new error_1.DBOSError("Communicator reached maximum retries.", 1) : err;
|
359
|
-
await this.#dbosExec.systemDatabase.recordOperationError(this.workflowUUID, ctxt.functionID, err);
|
360
|
-
ctxt.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: err.message });
|
361
|
-
this.#dbosExec.tracer.endSpan(ctxt.span);
|
362
|
-
throw err;
|
363
|
-
}
|
364
|
-
else {
|
365
|
-
// Record the execution and return.
|
366
|
-
await this.#dbosExec.systemDatabase.recordOperationOutput(this.workflowUUID, ctxt.functionID, result);
|
367
|
-
ctxt.span.setStatus({ code: api_1.SpanStatusCode.OK });
|
368
|
-
this.#dbosExec.tracer.endSpan(ctxt.span);
|
369
|
-
return result;
|
370
|
-
}
|
371
|
-
}
|
372
|
-
/**
|
373
|
-
* Send a message to a workflow identified by a UUID.
|
374
|
-
* The message can optionally be tagged with a topic.
|
375
|
-
*/
|
376
|
-
async send(destinationUUID, message, topic) {
|
377
|
-
const functionID = this.functionIDGetIncrement();
|
378
|
-
await this.#dbosExec.userDatabase.transaction(async (client) => {
|
379
|
-
await this.flushResultBuffer(client);
|
380
|
-
}, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted });
|
381
|
-
this.resultBuffer.clear();
|
382
|
-
await this.#dbosExec.systemDatabase.send(this.workflowUUID, functionID, destinationUUID, message, topic);
|
383
|
-
}
|
384
|
-
/**
|
385
|
-
* Consume and return the oldest unconsumed message sent to your UUID.
|
386
|
-
* If a topic is specified, retrieve the oldest message tagged with that topic.
|
387
|
-
* Otherwise, retrieve the oldest message with no topic.
|
388
|
-
*/
|
389
|
-
async recv(topic, timeoutSeconds = dbos_executor_1.DBOSExecutor.defaultNotificationTimeoutSec) {
|
390
|
-
const functionID = this.functionIDGetIncrement();
|
391
|
-
await this.#dbosExec.userDatabase.transaction(async (client) => {
|
392
|
-
await this.flushResultBuffer(client);
|
393
|
-
}, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted });
|
394
|
-
this.resultBuffer.clear();
|
395
|
-
return this.#dbosExec.systemDatabase.recv(this.workflowUUID, functionID, topic, timeoutSeconds);
|
396
|
-
}
|
397
|
-
/**
|
398
|
-
* Emit a workflow event, represented as a key-value pair.
|
399
|
-
* Events are immutable once set.
|
400
|
-
*/
|
401
|
-
async setEvent(key, value) {
|
402
|
-
const functionID = this.functionIDGetIncrement();
|
403
|
-
await this.#dbosExec.userDatabase.transaction(async (client) => {
|
404
|
-
await this.flushResultBuffer(client);
|
405
|
-
}, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted });
|
406
|
-
this.resultBuffer.clear();
|
407
|
-
await this.#dbosExec.systemDatabase.setEvent(this.workflowUUID, functionID, key, value);
|
408
|
-
}
|
409
|
-
/**
|
410
|
-
* Generate a proxy object for the provided class that wraps direct calls (i.e. OpClass.someMethod(param))
|
411
|
-
* to use WorkflowContext.Transaction(OpClass.someMethod, param);
|
412
|
-
*/
|
413
|
-
invoke(object) {
|
414
|
-
const ops = (0, decorators_1.getRegisteredOperations)(object);
|
415
|
-
const proxy = {};
|
416
|
-
for (const op of ops) {
|
417
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
418
|
-
proxy[op.name] = op.txnConfig
|
419
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
420
|
-
? (...args) => this.transaction(op.registeredFunction, ...args)
|
421
|
-
: op.commConfig
|
422
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
423
|
-
? (...args) => this.external(op.registeredFunction, ...args)
|
424
|
-
: undefined;
|
425
|
-
}
|
426
|
-
return proxy;
|
427
|
-
}
|
428
|
-
/**
|
429
|
-
* Wait for a workflow to emit an event, then return its value.
|
430
|
-
*/
|
431
|
-
getEvent(targetUUID, key, timeoutSeconds = dbos_executor_1.DBOSExecutor.defaultNotificationTimeoutSec) {
|
432
|
-
const functionID = this.functionIDGetIncrement();
|
433
|
-
return this.#dbosExec.systemDatabase.getEvent(targetUUID, key, timeoutSeconds, this.workflowUUID, functionID);
|
434
|
-
}
|
435
|
-
/**
|
436
|
-
* Retrieve a handle for a workflow UUID.
|
437
|
-
*/
|
438
|
-
retrieveWorkflow(targetUUID) {
|
439
|
-
const functionID = this.functionIDGetIncrement();
|
440
|
-
return new RetrievedHandle(this.#dbosExec.systemDatabase, targetUUID, this.workflowUUID, functionID);
|
441
|
-
}
|
442
|
-
}
|
443
|
-
exports.WorkflowContextImpl = WorkflowContextImpl;
|
444
|
-
/**
|
445
|
-
* The handle returned when invoking a workflow with DBOSExecutor.workflow
|
446
|
-
*/
|
447
|
-
class InvokedHandle {
|
448
|
-
systemDatabase;
|
449
|
-
workflowPromise;
|
450
|
-
workflowUUID;
|
451
|
-
workflowName;
|
452
|
-
callerUUID;
|
453
|
-
callerFunctionID;
|
454
|
-
constructor(systemDatabase, workflowPromise, workflowUUID, workflowName, callerUUID, callerFunctionID) {
|
455
|
-
this.systemDatabase = systemDatabase;
|
456
|
-
this.workflowPromise = workflowPromise;
|
457
|
-
this.workflowUUID = workflowUUID;
|
458
|
-
this.workflowName = workflowName;
|
459
|
-
this.callerUUID = callerUUID;
|
460
|
-
this.callerFunctionID = callerFunctionID;
|
461
|
-
}
|
462
|
-
getWorkflowUUID() {
|
463
|
-
return this.workflowUUID;
|
464
|
-
}
|
465
|
-
async getStatus() {
|
466
|
-
return this.systemDatabase.getWorkflowStatus(this.workflowUUID, this.callerUUID, this.callerFunctionID);
|
467
|
-
}
|
468
|
-
async getResult() {
|
469
|
-
return this.workflowPromise;
|
470
|
-
}
|
471
|
-
}
|
472
|
-
exports.InvokedHandle = InvokedHandle;
|
473
|
-
/**
|
474
|
-
* The handle returned when retrieving a workflow with DBOSExecutor.retrieve
|
475
|
-
*/
|
476
|
-
class RetrievedHandle {
|
477
|
-
systemDatabase;
|
478
|
-
workflowUUID;
|
479
|
-
callerUUID;
|
480
|
-
callerFunctionID;
|
481
|
-
constructor(systemDatabase, workflowUUID, callerUUID, callerFunctionID) {
|
482
|
-
this.systemDatabase = systemDatabase;
|
483
|
-
this.workflowUUID = workflowUUID;
|
484
|
-
this.callerUUID = callerUUID;
|
485
|
-
this.callerFunctionID = callerFunctionID;
|
486
|
-
}
|
487
|
-
getWorkflowUUID() {
|
488
|
-
return this.workflowUUID;
|
489
|
-
}
|
490
|
-
async getStatus() {
|
491
|
-
return await this.systemDatabase.getWorkflowStatus(this.workflowUUID, this.callerUUID, this.callerFunctionID);
|
492
|
-
}
|
493
|
-
async getResult() {
|
494
|
-
return await this.systemDatabase.getWorkflowResult(this.workflowUUID);
|
495
|
-
}
|
496
|
-
}
|
497
|
-
exports.RetrievedHandle = RetrievedHandle;
|
498
|
-
//# sourceMappingURL=workflow.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../../src/workflow.ts"],"names":[],"mappings":"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"}
|