@dbos-inc/dbos-sdk 4.26.3-preview → 4.26.4-preview
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/schemas/system_db_schema.d.ts +5 -0
- package/dist/schemas/system_db_schema.d.ts.map +1 -1
- package/dist/schemas/system_db_schema.js.map +1 -1
- package/dist/src/adminserver.js +1 -1
- package/dist/src/adminserver.js.map +1 -1
- package/dist/src/cli/cli.d.ts.map +1 -1
- package/dist/src/cli/cli.js +64 -0
- package/dist/src/cli/cli.js.map +1 -1
- package/dist/src/cli/schema.d.ts.map +1 -1
- package/dist/src/cli/schema.js +26 -16
- package/dist/src/cli/schema.js.map +1 -1
- package/dist/src/client.d.ts +62 -4
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +58 -8
- package/dist/src/client.js.map +1 -1
- package/dist/src/conductor/conductor.d.ts.map +1 -1
- package/dist/src/conductor/conductor.js +13 -2
- package/dist/src/conductor/conductor.js.map +1 -1
- package/dist/src/conductor/protocol.d.ts +16 -2
- package/dist/src/conductor/protocol.d.ts.map +1 -1
- package/dist/src/conductor/protocol.js +10 -2
- package/dist/src/conductor/protocol.js.map +1 -1
- package/dist/src/context.d.ts +1 -0
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +2 -1
- package/dist/src/context.js.map +1 -1
- package/dist/src/dbos-executor.d.ts +1 -0
- package/dist/src/dbos-executor.d.ts.map +1 -1
- package/dist/src/dbos-executor.js +11 -2
- package/dist/src/dbos-executor.js.map +1 -1
- package/dist/src/dbos.d.ts +41 -7
- package/dist/src/dbos.d.ts.map +1 -1
- package/dist/src/dbos.js +61 -4
- package/dist/src/dbos.js.map +1 -1
- package/dist/src/debouncer.d.ts +4 -0
- package/dist/src/debouncer.d.ts.map +1 -1
- package/dist/src/debouncer.js +32 -8
- package/dist/src/debouncer.js.map +1 -1
- package/dist/src/enqueue_options.d.ts +59 -0
- package/dist/src/enqueue_options.d.ts.map +1 -0
- package/dist/src/enqueue_options.js +61 -0
- package/dist/src/enqueue_options.js.map +1 -0
- package/dist/src/enqueue_workflow.d.ts +12 -0
- package/dist/src/enqueue_workflow.d.ts.map +1 -0
- package/dist/src/enqueue_workflow.js +91 -0
- package/dist/src/enqueue_workflow.js.map +1 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/scheduler/scheduler.d.ts +1 -0
- package/dist/src/scheduler/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler/scheduler.js +13 -5
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/sysdb_migrations/internal/migrations.d.ts +2 -1
- package/dist/src/sysdb_migrations/internal/migrations.d.ts.map +1 -1
- package/dist/src/sysdb_migrations/internal/migrations.js +186 -2
- package/dist/src/sysdb_migrations/internal/migrations.js.map +1 -1
- package/dist/src/sysdb_migrations/migration_runner.d.ts +5 -0
- package/dist/src/sysdb_migrations/migration_runner.d.ts.map +1 -1
- package/dist/src/sysdb_migrations/migration_runner.js +48 -10
- package/dist/src/sysdb_migrations/migration_runner.js.map +1 -1
- package/dist/src/system_database.d.ts +65 -10
- package/dist/src/system_database.d.ts.map +1 -1
- package/dist/src/system_database.js +544 -152
- package/dist/src/system_database.js.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/wfqueue.d.ts +2 -0
- package/dist/src/wfqueue.d.ts.map +1 -1
- package/dist/src/wfqueue.js +5 -1
- package/dist/src/wfqueue.js.map +1 -1
- package/dist/src/workflow.d.ts +2 -0
- package/dist/src/workflow.d.ts.map +1 -1
- package/dist/src/workflow.js.map +1 -1
- package/dist/src/workflow_management.d.ts.map +1 -1
- package/dist/src/workflow_management.js +4 -9
- package/dist/src/workflow_management.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.allMigrations = void 0;
|
|
3
|
+
exports.allMigrations = exports.SHARED_MIGRATION_BASE = void 0;
|
|
4
|
+
const migration_runner_1 = require("../migration_runner");
|
|
5
|
+
Object.defineProperty(exports, "SHARED_MIGRATION_BASE", { enumerable: true, get: function () { return migration_runner_1.SHARED_MIGRATION_BASE; } });
|
|
6
|
+
/**
|
|
7
|
+
* Pad a language's own history out to SHARED_MIGRATION_BASE - 1. Earlier indices
|
|
8
|
+
* stay per-language, safe to skip only because the schemas converge.
|
|
9
|
+
*/
|
|
10
|
+
function padToSharedBase(migrations) {
|
|
11
|
+
const padding = Array.from({ length: migration_runner_1.SHARED_MIGRATION_BASE - 1 - migrations.length }, () => ({
|
|
12
|
+
pg: [],
|
|
13
|
+
}));
|
|
14
|
+
return [...migrations, ...padding];
|
|
15
|
+
}
|
|
4
16
|
function allMigrations(schemaName = 'dbos', opts) {
|
|
5
17
|
const useListenNotify = opts?.useListenNotify ?? true;
|
|
6
18
|
const isCockroach = opts?.isCockroach ?? false;
|
|
7
19
|
const c = isCockroach ? '' : 'CONCURRENTLY';
|
|
8
|
-
|
|
20
|
+
const history = [
|
|
9
21
|
{
|
|
10
22
|
name: '20240123182943_schema',
|
|
11
23
|
pg: [`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`],
|
|
@@ -720,7 +732,179 @@ function allMigrations(schemaName = 'dbos', opts) {
|
|
|
720
732
|
online: true,
|
|
721
733
|
pg: [`DROP INDEX ${c} IF EXISTS "${schemaName}"."idx_workflow_status_partition_dequeue"`],
|
|
722
734
|
},
|
|
735
|
+
// Long-abandoned tables whose contents moved onto workflow_status; dropping them leaves the schema identical to every other SDK's at the shared base.
|
|
736
|
+
{
|
|
737
|
+
name: '20250725_drop_consolidated_tables',
|
|
738
|
+
pg: [
|
|
739
|
+
`DROP TABLE IF EXISTS "${schemaName}"."workflow_inputs"`,
|
|
740
|
+
`DROP TABLE IF EXISTS "${schemaName}"."workflow_queue"`,
|
|
741
|
+
`DROP TABLE IF EXISTS "${schemaName}"."scheduler_state"`,
|
|
742
|
+
],
|
|
743
|
+
},
|
|
723
744
|
];
|
|
745
|
+
return [...padToSharedBase(history), ...sharedMigrations(schemaName, isCockroach)];
|
|
724
746
|
}
|
|
725
747
|
exports.allMigrations = allMigrations;
|
|
748
|
+
/**
|
|
749
|
+
* Migrations from SHARED_MIGRATION_BASE on, defined identically by every SDK at the
|
|
750
|
+
* same index so applications in different languages can share a system database.
|
|
751
|
+
*/
|
|
752
|
+
function sharedMigrations(schemaName, isCockroach) {
|
|
753
|
+
return [
|
|
754
|
+
// NULL means unclaimed: any application may read and claim the row. One table per migration, so a blocked table does not hold the others' locks.
|
|
755
|
+
{
|
|
756
|
+
name: '100_workflow_status_application_name',
|
|
757
|
+
pg: [
|
|
758
|
+
`ALTER TABLE "${schemaName}"."workflow_status" ADD COLUMN IF NOT EXISTS "application_name" TEXT DEFAULT NULL`,
|
|
759
|
+
],
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
name: '101_queues_application_name',
|
|
763
|
+
pg: [`ALTER TABLE "${schemaName}"."queues" ADD COLUMN IF NOT EXISTS "application_name" TEXT DEFAULT NULL`],
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
name: '102_workflow_schedules_application_name',
|
|
767
|
+
pg: [
|
|
768
|
+
`ALTER TABLE "${schemaName}"."workflow_schedules" ADD COLUMN IF NOT EXISTS "application_name" TEXT DEFAULT NULL`,
|
|
769
|
+
],
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
name: '103_application_versions_application_name',
|
|
773
|
+
pg: [
|
|
774
|
+
`ALTER TABLE "${schemaName}"."application_versions" ADD COLUMN IF NOT EXISTS "application_name" TEXT DEFAULT NULL`,
|
|
775
|
+
],
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
name: '104_operation_outputs_application_name',
|
|
779
|
+
pg: [
|
|
780
|
+
`ALTER TABLE "${schemaName}"."operation_outputs" ADD COLUMN IF NOT EXISTS "application_name" TEXT DEFAULT NULL`,
|
|
781
|
+
],
|
|
782
|
+
},
|
|
783
|
+
// Callers omitting the trailing application_name enqueue an unclaimed workflow.
|
|
784
|
+
{
|
|
785
|
+
name: '105_enqueue_workflow_application_name',
|
|
786
|
+
pg: [
|
|
787
|
+
`DROP FUNCTION IF EXISTS "${schemaName}".enqueue_workflow(
|
|
788
|
+
TEXT, TEXT, JSON[], JSON, TEXT, TEXT, TEXT, TEXT, BIGINT, BIGINT, TEXT, INT4, TEXT, TEXT, TEXT, BIGINT
|
|
789
|
+
)`,
|
|
790
|
+
`CREATE OR REPLACE FUNCTION "${schemaName}".enqueue_workflow(
|
|
791
|
+
workflow_name TEXT,
|
|
792
|
+
queue_name TEXT,
|
|
793
|
+
positional_args JSON[] DEFAULT ARRAY[]::JSON[],
|
|
794
|
+
named_args JSON DEFAULT '{}'::JSON,
|
|
795
|
+
class_name TEXT DEFAULT NULL,
|
|
796
|
+
config_name TEXT DEFAULT NULL,
|
|
797
|
+
workflow_id TEXT DEFAULT NULL,
|
|
798
|
+
app_version TEXT DEFAULT NULL,
|
|
799
|
+
timeout_ms BIGINT DEFAULT NULL,
|
|
800
|
+
deadline_epoch_ms BIGINT DEFAULT NULL,
|
|
801
|
+
deduplication_id TEXT DEFAULT NULL,
|
|
802
|
+
priority INT4 DEFAULT NULL,
|
|
803
|
+
queue_partition_key TEXT DEFAULT NULL,
|
|
804
|
+
authenticated_user TEXT DEFAULT NULL,
|
|
805
|
+
authenticated_roles TEXT DEFAULT NULL,
|
|
806
|
+
delay_until_epoch_ms BIGINT DEFAULT NULL,
|
|
807
|
+
application_name TEXT DEFAULT NULL
|
|
808
|
+
) RETURNS TEXT AS $$
|
|
809
|
+
DECLARE
|
|
810
|
+
v_workflow_id TEXT;
|
|
811
|
+
v_serialized_inputs TEXT;
|
|
812
|
+
v_owner_xid TEXT;
|
|
813
|
+
v_now BIGINT;
|
|
814
|
+
v_recovery_attempts INT4 := 0;
|
|
815
|
+
v_priority INT4;
|
|
816
|
+
v_status TEXT;
|
|
817
|
+
BEGIN
|
|
818
|
+
|
|
819
|
+
-- Validate required parameters
|
|
820
|
+
IF workflow_name IS NULL OR workflow_name = '' THEN
|
|
821
|
+
RAISE EXCEPTION 'Workflow name cannot be null or empty';
|
|
822
|
+
END IF;
|
|
823
|
+
IF queue_name IS NULL OR queue_name = '' THEN
|
|
824
|
+
RAISE EXCEPTION 'Queue name cannot be null or empty';
|
|
825
|
+
END IF;
|
|
826
|
+
IF named_args IS NOT NULL AND jsonb_typeof(named_args::jsonb) != 'object' THEN
|
|
827
|
+
RAISE EXCEPTION 'Named args must be a JSON object';
|
|
828
|
+
END IF;
|
|
829
|
+
IF workflow_id IS NOT NULL AND workflow_id = '' THEN
|
|
830
|
+
RAISE EXCEPTION 'Workflow ID cannot be an empty string if provided.';
|
|
831
|
+
END IF;
|
|
832
|
+
IF delay_until_epoch_ms IS NOT NULL AND delay_until_epoch_ms < 0 THEN
|
|
833
|
+
RAISE EXCEPTION 'delay_until_epoch_ms must be >= 0';
|
|
834
|
+
END IF;
|
|
835
|
+
|
|
836
|
+
v_workflow_id := COALESCE(workflow_id, gen_random_uuid()::TEXT);
|
|
837
|
+
v_owner_xid := gen_random_uuid()::TEXT;
|
|
838
|
+
v_priority := COALESCE(priority, 0);
|
|
839
|
+
v_serialized_inputs := json_build_object(
|
|
840
|
+
'positionalArgs', positional_args,
|
|
841
|
+
'namedArgs', named_args
|
|
842
|
+
)::TEXT;
|
|
843
|
+
v_now := EXTRACT(epoch FROM now()) * 1000;
|
|
844
|
+
v_status := CASE WHEN delay_until_epoch_ms IS NULL THEN 'ENQUEUED' ELSE 'DELAYED' END;
|
|
845
|
+
|
|
846
|
+
INSERT INTO "${schemaName}".workflow_status (
|
|
847
|
+
workflow_uuid, status, inputs,
|
|
848
|
+
name, class_name, config_name,
|
|
849
|
+
queue_name, deduplication_id, priority, queue_partition_key,
|
|
850
|
+
application_version,
|
|
851
|
+
created_at, updated_at, recovery_attempts,
|
|
852
|
+
workflow_timeout_ms, workflow_deadline_epoch_ms,
|
|
853
|
+
parent_workflow_id, owner_xid, serialization,
|
|
854
|
+
authenticated_user, authenticated_roles,
|
|
855
|
+
delay_until_epoch_ms, application_name
|
|
856
|
+
) VALUES (
|
|
857
|
+
v_workflow_id, v_status, v_serialized_inputs,
|
|
858
|
+
workflow_name, class_name, config_name,
|
|
859
|
+
queue_name, deduplication_id, v_priority, queue_partition_key,
|
|
860
|
+
app_version,
|
|
861
|
+
v_now, v_now, v_recovery_attempts,
|
|
862
|
+
timeout_ms, deadline_epoch_ms,
|
|
863
|
+
NULL, v_owner_xid, 'portable_json',
|
|
864
|
+
authenticated_user, authenticated_roles,
|
|
865
|
+
delay_until_epoch_ms, application_name
|
|
866
|
+
)
|
|
867
|
+
ON CONFLICT (workflow_uuid)
|
|
868
|
+
DO UPDATE SET
|
|
869
|
+
updated_at = EXCLUDED.updated_at;
|
|
870
|
+
|
|
871
|
+
RETURN v_workflow_id;
|
|
872
|
+
|
|
873
|
+
EXCEPTION
|
|
874
|
+
WHEN unique_violation THEN
|
|
875
|
+
RAISE EXCEPTION 'DBOS queue duplicated'
|
|
876
|
+
USING DETAIL = format('Workflow %s with queue %s and deduplication ID %s already exists', v_workflow_id, queue_name, deduplication_id),
|
|
877
|
+
ERRCODE = 'unique_violation';
|
|
878
|
+
END;
|
|
879
|
+
$$ LANGUAGE plpgsql;`,
|
|
880
|
+
...(isCockroach
|
|
881
|
+
? []
|
|
882
|
+
: [
|
|
883
|
+
`ALTER FUNCTION "${schemaName}".enqueue_workflow(
|
|
884
|
+
TEXT, TEXT, JSON[], JSON, TEXT, TEXT, TEXT, TEXT, BIGINT, BIGINT, TEXT, INT4, TEXT, TEXT, TEXT, BIGINT, TEXT
|
|
885
|
+
) SET search_path = pg_catalog, pg_temp`,
|
|
886
|
+
]),
|
|
887
|
+
],
|
|
888
|
+
},
|
|
889
|
+
// Half of the key replacing version_name's global uniqueness, which will be dropped in a future version.
|
|
890
|
+
{
|
|
891
|
+
name: '106_application_versions_owner_key',
|
|
892
|
+
pg: [
|
|
893
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS "uq_application_versions_owner_version"
|
|
894
|
+
ON "${schemaName}"."application_versions" ("application_name", "version_name")
|
|
895
|
+
WHERE "application_name" IS NOT NULL`,
|
|
896
|
+
],
|
|
897
|
+
},
|
|
898
|
+
// The other half, unclaimed rows counting as one owner. Online because every pre-upgrade row is unclaimed, so this one indexes them all.
|
|
899
|
+
{
|
|
900
|
+
name: '107_application_versions_unclaimed_key',
|
|
901
|
+
online: true,
|
|
902
|
+
pg: [
|
|
903
|
+
`CREATE UNIQUE INDEX ${isCockroach ? '' : 'CONCURRENTLY'} IF NOT EXISTS "uq_application_versions_unclaimed_version"
|
|
904
|
+
ON "${schemaName}"."application_versions" ("version_name")
|
|
905
|
+
WHERE "application_name" IS NULL`,
|
|
906
|
+
],
|
|
907
|
+
},
|
|
908
|
+
];
|
|
909
|
+
}
|
|
726
910
|
//# sourceMappingURL=migrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../../src/sysdb_migrations/internal/migrations.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../../src/sysdb_migrations/internal/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { ClientBase } from 'pg';
|
|
2
|
+
/**
|
|
3
|
+
* From this index on, every SDK defines the same migration at the same index and runs it
|
|
4
|
+
* in one transaction, so a peer in another language never observes it half-applied.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SHARED_MIGRATION_BASE = 100;
|
|
2
7
|
export type DBMigration = {
|
|
3
8
|
name?: string;
|
|
4
9
|
pg?: ReadonlyArray<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration_runner.d.ts","sourceRoot":"","sources":["../../../src/sysdb_migrations/migration_runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,kEAAkE;AAClE,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB7G;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"migration_runner.d.ts","sourceRoot":"","sources":["../../../src/sysdb_migrations/migration_runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,kEAAkE;AAClE,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB7G;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA8GF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,EACzC,UAAU,GAAE,MAAe,EAC3B,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAmFD"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runSysMigrationsPg = exports.getCurrentSysDBVersion = void 0;
|
|
3
|
+
exports.runSysMigrationsPg = exports.getCurrentSysDBVersion = exports.SHARED_MIGRATION_BASE = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* From this index on, every SDK defines the same migration at the same index and runs it
|
|
6
|
+
* in one transaction, so a peer in another language never observes it half-applied.
|
|
7
|
+
*/
|
|
8
|
+
exports.SHARED_MIGRATION_BASE = 100;
|
|
4
9
|
/** Get the current DB version, or 0 if table is missing/empty. */
|
|
5
10
|
async function getCurrentSysDBVersion(client, schemaName = 'dbos') {
|
|
6
11
|
// Does table exist?
|
|
@@ -51,6 +56,30 @@ async function runStatementsIgnoring(client, stmts, ignoreCodes, warn) {
|
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Run a migration's statements and record its version in one transaction, with no "already applied"
|
|
61
|
+
* tolerance: every SDK must reach the same verdict, so a failure halts with the version un-advanced.
|
|
62
|
+
*/
|
|
63
|
+
async function runStatementsTransactionally(client, stmts, schemaName, version) {
|
|
64
|
+
await client.query('BEGIN');
|
|
65
|
+
try {
|
|
66
|
+
for (const s of stmts) {
|
|
67
|
+
await client.query(s, []);
|
|
68
|
+
}
|
|
69
|
+
// Recorded inside the transaction, so an interrupt cannot leave the migration applied but unrecorded.
|
|
70
|
+
await bumpMigrationVersion(client, schemaName, version);
|
|
71
|
+
await client.query('COMMIT');
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
try {
|
|
75
|
+
await client.query('ROLLBACK');
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Preserve the original failure; the rollback only matters if the connection survived.
|
|
79
|
+
}
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
54
83
|
/**
|
|
55
84
|
* Drop indexes left INVALID by a prior interrupted `CREATE INDEX CONCURRENTLY`.
|
|
56
85
|
* Postgres marks such indexes invalid; they continue to consume write overhead
|
|
@@ -114,18 +143,17 @@ async function runSysMigrationsPg(client, allMigrations, schemaName = 'dbos', op
|
|
|
114
143
|
skipped++;
|
|
115
144
|
continue;
|
|
116
145
|
}
|
|
117
|
-
|
|
118
|
-
onWarn(`Running DBOS system database migrations...`);
|
|
119
|
-
loggedInfo = true;
|
|
120
|
-
}
|
|
146
|
+
// Renumbering onto the shared base leaves long runs of empty migrations; skip them without a round trip.
|
|
121
147
|
const stmts = m.pg ?? [];
|
|
122
148
|
if (stmts.length === 0) {
|
|
123
|
-
onWarn(`Migration "${m.name}" has no Postgres statements; skipping.`);
|
|
124
|
-
await bumpMigrationVersion(client, schemaName, v);
|
|
125
149
|
skipped++;
|
|
126
|
-
lastAppliedVersion = v;
|
|
127
150
|
continue;
|
|
128
151
|
}
|
|
152
|
+
if (!loggedInfo) {
|
|
153
|
+
onWarn(`Running DBOS system database migrations...`);
|
|
154
|
+
loggedInfo = true;
|
|
155
|
+
}
|
|
156
|
+
const warnWithCause = (msg, e) => onWarn(`${msg}${e ? `\n → ${String(e.message ?? '')}` : ''}`);
|
|
129
157
|
// Run migrations in autocommit
|
|
130
158
|
if (m.online && !isCockroach) {
|
|
131
159
|
// Drop any indexes left INVALID by a prior interrupted run before
|
|
@@ -134,14 +162,24 @@ async function runSysMigrationsPg(client, allMigrations, schemaName = 'dbos', op
|
|
|
134
162
|
for (const s of stmts) {
|
|
135
163
|
await client.query(s, []);
|
|
136
164
|
}
|
|
165
|
+
await bumpMigrationVersion(client, schemaName, v);
|
|
166
|
+
}
|
|
167
|
+
else if (v >= exports.SHARED_MIGRATION_BASE) {
|
|
168
|
+
// Shared migrations commit all-or-nothing: a peer must never find the function 105 replaces missing mid-migration.
|
|
169
|
+
await runStatementsTransactionally(client, stmts, schemaName, v);
|
|
137
170
|
}
|
|
138
171
|
else {
|
|
139
|
-
await runStatementsIgnoring(client, stmts, ignoreErrorCodes,
|
|
172
|
+
await runStatementsIgnoring(client, stmts, ignoreErrorCodes, warnWithCause);
|
|
173
|
+
await bumpMigrationVersion(client, schemaName, v);
|
|
140
174
|
}
|
|
141
|
-
await bumpMigrationVersion(client, schemaName, v);
|
|
142
175
|
applied++;
|
|
143
176
|
lastAppliedVersion = v;
|
|
144
177
|
}
|
|
178
|
+
// Empty migrations at the end still count as applied, so record them in one write.
|
|
179
|
+
if (maxKnown > lastAppliedVersion) {
|
|
180
|
+
await bumpMigrationVersion(client, schemaName, maxKnown);
|
|
181
|
+
lastAppliedVersion = maxKnown;
|
|
182
|
+
}
|
|
145
183
|
return {
|
|
146
184
|
fromVersion: current,
|
|
147
185
|
toVersion: lastAppliedVersion,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration_runner.js","sourceRoot":"","sources":["../../../src/sysdb_migrations/migration_runner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"migration_runner.js","sourceRoot":"","sources":["../../../src/sysdb_migrations/migration_runner.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAgBzC,kEAAkE;AAC3D,KAAK,UAAU,sBAAsB,CAAC,MAAkB,EAAE,aAAqB,MAAM;IAC1F,oBAAoB;IACpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,6GAA6G,EAC7G,CAAC,UAAU,CAAC,CACb,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU;QAAE,OAAO,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,wBAAwB,UAAU,mDAAmD,CACtF,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnC,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAhBD,wDAgBC;AAQD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS;IAC9C,mCAAmC;IACnC,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,iCAAiC;IAC1C,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,4CAA4C;IAC5C,OAAO,EAAE,mBAAmB;CAC7B,CAAC,CAAC;AAGH,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAY,EAAE,WAAgC;IAChF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC;AAED,mEAAmE;AACnE,KAAK,UAAU,qBAAqB,CAClC,MAAkB,EAClB,KAA4B,EAC5B,WAAgC,EAChC,IAAsC;IAEtC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,0BAA0B,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,8FAA8F,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7G,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,4BAA4B,CACzC,MAAkB,EAClB,KAA4B,EAC5B,UAAkB,EAClB,OAAe;IAEf,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,sGAAsG;QACtG,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,uFAAuF;QACzF,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAkB,EAAE,UAAkB,EAAE,IAAyB;IACpG,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;;iDAK6C,EAC7C,CAAC,UAAU,CAAC,CACb,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,2BAA2B,UAAU,MAAM,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC;QACjG,MAAM,MAAM,CAAC,KAAK,CAAC,sCAAsC,UAAU,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAAkB,EAAE,UAAkB,EAAE,OAAe;IACzF,kFAAkF;IAClF,sFAAsF;IACtF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B,6GAA6G,EAC7G,CAAC,UAAU,CAAC,CACb,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU;QAAE,OAAO;IAErC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,wCAAwC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/G,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,UAAU,6CAA6C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzG,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,MAAkB,EAClB,aAAyC,EACzC,aAAqB,MAAM,EAC3B,OAA0B,EAAE;IAQ5B,MAAM,EAAE,gBAAgB,GAAG,uBAAuB,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAElH,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;IAEtC,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;QACvB,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,aAAa,CAAC,MAAM;YAClC,MAAM,EACJ,qBAAqB,OAAO,mCAAmC,QAAQ,KAAK;gBAC5E,uDAAuD;SAC1D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,kBAAkB,GAAG,OAAO,CAAC;IACjC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,mCAAmC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,yGAAyG;QACzG,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,4CAA4C,CAAC,CAAC;YACrD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,CAAW,EAAE,EAAE,CACjD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAE,CAA0B,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3F,+BAA+B;QAC/B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7B,kEAAkE;YAClE,8CAA8C;YAC9C,MAAM,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,IAAI,6BAAqB,EAAE,CAAC;YACtC,mHAAmH;YACnH,MAAM,4BAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,MAAM,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC5E,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,CAAC;QACV,kBAAkB,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,mFAAmF;IACnF,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAClC,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzD,kBAAkB,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,kBAAkB;QAC7B,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,MAAM,EACJ,OAAO,GAAG,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC;YAChD,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,SAAS;KAChB,CAAC;AACJ,CAAC;AA9FD,gDA8FC"}
|
|
@@ -49,6 +49,7 @@ export interface WorkflowScheduleInternal {
|
|
|
49
49
|
automaticBackfill: boolean;
|
|
50
50
|
cronTimezone: string | null;
|
|
51
51
|
queueName: string | null;
|
|
52
|
+
applicationName?: string;
|
|
52
53
|
}
|
|
53
54
|
export interface WorkflowScheduleUpdate {
|
|
54
55
|
schedule?: string;
|
|
@@ -62,7 +63,17 @@ export interface VersionInfo {
|
|
|
62
63
|
versionName: string;
|
|
63
64
|
versionTimestamp: number;
|
|
64
65
|
createdAt: number;
|
|
66
|
+
applicationName?: string;
|
|
65
67
|
}
|
|
68
|
+
/** Rows a rename moved, by table. */
|
|
69
|
+
export interface ApplicationRowCounts {
|
|
70
|
+
queues: number;
|
|
71
|
+
schedules: number;
|
|
72
|
+
versions: number;
|
|
73
|
+
workflows: number;
|
|
74
|
+
steps: number;
|
|
75
|
+
}
|
|
76
|
+
export declare const DEFAULT_RENAME_BATCH_SIZE = 10000;
|
|
66
77
|
export interface QueueRecord {
|
|
67
78
|
name: string;
|
|
68
79
|
concurrency: number | null;
|
|
@@ -72,9 +83,10 @@ export interface QueueRecord {
|
|
|
72
83
|
priorityEnabled: boolean;
|
|
73
84
|
partitionQueue: boolean;
|
|
74
85
|
pollingIntervalSec: number;
|
|
86
|
+
applicationName?: string;
|
|
75
87
|
}
|
|
76
|
-
/** The subset of a queue record that may be changed after creation. */
|
|
77
|
-
export type QueueRecordUpdate = Partial<Omit<QueueRecord, 'name'>>;
|
|
88
|
+
/** The subset of a queue record that may be changed after creation. Ownership moves only by rename. */
|
|
89
|
+
export type QueueRecordUpdate = Partial<Omit<QueueRecord, 'name' | 'applicationName'>>;
|
|
78
90
|
export interface WorkflowAggregateRow {
|
|
79
91
|
group: Record<string, string | null>;
|
|
80
92
|
count: number | null;
|
|
@@ -93,6 +105,7 @@ export interface GetWorkflowAggregatesInput {
|
|
|
93
105
|
groupByQueueName?: boolean;
|
|
94
106
|
groupByExecutorId?: boolean;
|
|
95
107
|
groupByApplicationVersion?: boolean;
|
|
108
|
+
groupByApplicationName?: boolean;
|
|
96
109
|
selectCount?: boolean;
|
|
97
110
|
selectMinCreatedAt?: boolean;
|
|
98
111
|
selectMaxQueueWaitMs?: boolean;
|
|
@@ -119,6 +132,7 @@ export interface GetWorkflowAggregatesInput {
|
|
|
119
132
|
queuesOnly?: boolean;
|
|
120
133
|
attributes?: Record<string, unknown>;
|
|
121
134
|
scheduleName?: string[];
|
|
135
|
+
applicationName?: string[];
|
|
122
136
|
}
|
|
123
137
|
export interface GetStepAggregatesInput {
|
|
124
138
|
groupByFunctionName?: boolean;
|
|
@@ -131,6 +145,7 @@ export interface GetStepAggregatesInput {
|
|
|
131
145
|
workflowIdPrefix?: string[];
|
|
132
146
|
completedAfter?: string;
|
|
133
147
|
completedBefore?: string;
|
|
148
|
+
applicationName?: string[];
|
|
134
149
|
}
|
|
135
150
|
export interface WorkflowStatusInternal {
|
|
136
151
|
workflowUUID: string;
|
|
@@ -168,6 +183,7 @@ export interface WorkflowStatusInternal {
|
|
|
168
183
|
scheduleName?: string;
|
|
169
184
|
debounceDeadlineEpochMS?: number;
|
|
170
185
|
isDebounced?: boolean;
|
|
186
|
+
applicationName?: string;
|
|
171
187
|
}
|
|
172
188
|
export interface EnqueueOptions {
|
|
173
189
|
deduplicationID?: string;
|
|
@@ -177,6 +193,7 @@ export interface EnqueueOptions {
|
|
|
177
193
|
delaySeconds?: number;
|
|
178
194
|
debounceDeadlineEpochMS?: number;
|
|
179
195
|
isDebounced?: boolean;
|
|
196
|
+
applicationName?: string;
|
|
180
197
|
}
|
|
181
198
|
export interface DebounceParams {
|
|
182
199
|
workflowName: string;
|
|
@@ -186,6 +203,7 @@ export interface DebounceParams {
|
|
|
186
203
|
delayUntilEpochMS: number;
|
|
187
204
|
input: string | null;
|
|
188
205
|
serialization: string | null;
|
|
206
|
+
applicationName?: string;
|
|
189
207
|
}
|
|
190
208
|
export interface DebounceResult {
|
|
191
209
|
bouncedWorkflowID: string | null;
|
|
@@ -193,6 +211,7 @@ export interface DebounceResult {
|
|
|
193
211
|
holderIsDebounced: boolean;
|
|
194
212
|
holderWorkflowName: string | null;
|
|
195
213
|
holderWorkflowClassName: string | null;
|
|
214
|
+
holderApplicationName: string | null;
|
|
196
215
|
}
|
|
197
216
|
export type DuplicationPolicy = 'reject' | 'return-existing';
|
|
198
217
|
export interface ExistenceCheck {
|
|
@@ -236,6 +255,7 @@ export declare class SystemDatabase {
|
|
|
236
255
|
readonly systemDatabaseUrl: string;
|
|
237
256
|
readonly logger: GlobalLogger;
|
|
238
257
|
readonly serializer: DBOSSerializer;
|
|
258
|
+
readonly appName?: string | undefined;
|
|
239
259
|
readonly pool: Pool;
|
|
240
260
|
readonly schemaName: string;
|
|
241
261
|
notificationsClient: PoolClient | null;
|
|
@@ -259,7 +279,7 @@ export declare class SystemDatabase {
|
|
|
259
279
|
queueName?: string;
|
|
260
280
|
queuePartitionKey?: string;
|
|
261
281
|
}>;
|
|
262
|
-
constructor(systemDatabaseUrl: string, logger: GlobalLogger, serializer: DBOSSerializer, sysDbPoolSize?: number, systemDatabasePool?: Pool, schemaName?: string, useListenNotify?: boolean, pollingConcurrency?: number, notificationCoalesceMs?: number);
|
|
282
|
+
constructor(systemDatabaseUrl: string, logger: GlobalLogger, serializer: DBOSSerializer, sysDbPoolSize?: number, systemDatabasePool?: Pool, schemaName?: string, useListenNotify?: boolean, pollingConcurrency?: number, notificationCoalesceMs?: number, appName?: string | undefined);
|
|
263
283
|
getSerializer(): DBOSSerializer;
|
|
264
284
|
init(): Promise<void>;
|
|
265
285
|
destroy(): Promise<void>;
|
|
@@ -314,8 +334,9 @@ export declare class SystemDatabase {
|
|
|
314
334
|
* Extend an existing debounced DELAYED workflow's delay and update its inputs, atomically.
|
|
315
335
|
* The new delay is capped at the workflow's debounce_deadline_epoch_ms, if one is set.
|
|
316
336
|
* Matching on workflow name and class ensures a debounce-key collision between different
|
|
317
|
-
* workflows never overwrites another workflow's inputs.
|
|
318
|
-
*
|
|
337
|
+
* workflows never overwrites another workflow's inputs. The bounce acts for `params.applicationName`:
|
|
338
|
+
* it extends only that application's holders plus unclaimed ones, claiming those. If nothing matched,
|
|
339
|
+
* returns the current holder (or that the key is unheld) so the caller can start fresh or surface a conflict.
|
|
319
340
|
* Runs on `client` if given, joining its transaction (e.g. a transactional step's);
|
|
320
341
|
* otherwise in its own retried transaction.
|
|
321
342
|
*/
|
|
@@ -401,12 +422,22 @@ export declare class SystemDatabase {
|
|
|
401
422
|
getWorkflowAggregates(input: GetWorkflowAggregatesInput): Promise<WorkflowAggregateRow[]>;
|
|
402
423
|
getStepAggregates(input: GetStepAggregatesInput): Promise<StepAggregateRow[]>;
|
|
403
424
|
garbageCollect(cutoffEpochTimestampMs?: number | null, rowsThreshold?: number | null): Promise<void>;
|
|
404
|
-
|
|
425
|
+
/**
|
|
426
|
+
* IDs of this application's in-flight workflows created at or before the cutoff.
|
|
427
|
+
* Claiming-scoped, so an upgrade still times out its own unclaimed workflows.
|
|
428
|
+
*/
|
|
429
|
+
listTimedOutWorkflowIds(cutoffEpochTimestampMs: number): Promise<string[]>;
|
|
430
|
+
getMetrics(startTime: string, endTime: string, applicationName?: string[]): Promise<MetricData[]>;
|
|
405
431
|
createSchedule(schedule: WorkflowScheduleInternal, client?: PoolClient): Promise<void>;
|
|
432
|
+
/**
|
|
433
|
+
* List only schedules owned by these applications, plus unclaimed ones.
|
|
434
|
+
* By default, only list this application's schedules.
|
|
435
|
+
*/
|
|
406
436
|
listSchedules(filters?: {
|
|
407
437
|
status?: string | string[];
|
|
408
438
|
workflowName?: string | string[];
|
|
409
439
|
scheduleNamePrefix?: string | string[];
|
|
440
|
+
applicationName?: string | string[];
|
|
410
441
|
}, client?: PoolClient): Promise<WorkflowScheduleInternal[]>;
|
|
411
442
|
getSchedule(name: string, client?: PoolClient): Promise<WorkflowScheduleInternal | null>;
|
|
412
443
|
deleteSchedule(name: string, client?: PoolClient): Promise<void>;
|
|
@@ -414,18 +445,42 @@ export declare class SystemDatabase {
|
|
|
414
445
|
updateSchedule(name: string, updates: WorkflowScheduleUpdate, client?: PoolClient): Promise<void>;
|
|
415
446
|
updateLastFiredAt(name: string, lastFiredAt: string): Promise<void>;
|
|
416
447
|
applySchedules(schedules: WorkflowScheduleInternal[]): Promise<void>;
|
|
417
|
-
|
|
418
|
-
|
|
448
|
+
/**
|
|
449
|
+
* Register this version, claiming the row if nobody owns it yet so a pinned version
|
|
450
|
+
* does not stay unclaimed. A peer's name is a collision, which is why this throws.
|
|
451
|
+
*/
|
|
452
|
+
createApplicationVersion(versionName: string, applicationName?: string): Promise<void>;
|
|
453
|
+
/**
|
|
454
|
+
* Promote a version to latest. Promoting a peer's is a collision, not a retiming;
|
|
455
|
+
* promotion claims an unclaimed row, which would otherwise be every peer's latest.
|
|
456
|
+
*/
|
|
457
|
+
updateApplicationVersionTimestamp(versionName: string, newTimestamp: number, applicationName?: string): Promise<void>;
|
|
419
458
|
listApplicationVersions(): Promise<VersionInfo[]>;
|
|
420
|
-
|
|
459
|
+
/**
|
|
460
|
+
* The latest version registered by an application. Defaults to this handle's, so a
|
|
461
|
+
* caller acting for another one — firing its schedule — must name it.
|
|
462
|
+
*/
|
|
463
|
+
getLatestApplicationVersion(applicationName?: string): Promise<VersionInfo>;
|
|
421
464
|
getQueue(name: string): Promise<QueueRecord | null>;
|
|
422
|
-
|
|
465
|
+
/**
|
|
466
|
+
* List only queues owned by these applications, plus unclaimed ones.
|
|
467
|
+
* By default, only list this application's queues.
|
|
468
|
+
*/
|
|
469
|
+
listQueues(applicationName?: string | string[]): Promise<QueueRecord[]>;
|
|
423
470
|
deleteQueue(name: string): Promise<void>;
|
|
424
471
|
updateQueue(name: string, fields: QueueRecordUpdate): Promise<void>;
|
|
425
472
|
/** Returns true iff this call inserted a new row (i.e. the queue did not
|
|
426
473
|
* previously exist). False if the row already existed, regardless of
|
|
427
474
|
* whether it was updated. */
|
|
428
475
|
upsertQueue(record: QueueRecord, updateExisting: boolean): Promise<boolean>;
|
|
476
|
+
/**
|
|
477
|
+
* Give `newName` ownership of rows `oldName` holds, of unclaimed rows, or of both.
|
|
478
|
+
* The renamed application must be stopped, or its dequeues race this.
|
|
479
|
+
*/
|
|
480
|
+
renameApplication(oldName: string | undefined, newName: string, options?: {
|
|
481
|
+
batchSize?: number | null;
|
|
482
|
+
adoptUnclaimedRows?: boolean;
|
|
483
|
+
}): Promise<ApplicationRowCounts>;
|
|
429
484
|
private insertWorkflowStatus;
|
|
430
485
|
private getWorkflowStatusValue;
|
|
431
486
|
private updateWorkflowStatus;
|