pg-boss 12.21.1 → 12.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attorney.d.ts.map +1 -1
- package/dist/attorney.js +6 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/manager.d.ts +1 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +36 -21
- package/dist/migrationStore.d.ts.map +1 -1
- package/dist/migrationStore.js +114 -0
- package/dist/navigator.d.ts +17 -0
- package/dist/navigator.d.ts.map +1 -0
- package/dist/navigator.js +141 -0
- package/dist/plans.d.ts +5 -0
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +128 -59
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/attorney.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attorney.d.ts","sourceRoot":"","sources":["../src/attorney.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAExC,QAAA,MAAM,MAAM;;;;CAIX,CAAA;AAyDD,iBAAS,iBAAiB,CAAE,MAAM,GAAE,GAAQ,QAc3C;AAED,iBAAS,aAAa,CAAE,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAgDhD;AAWD,iBAAS,gBAAgB,CAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,QA2D/C;AA2GD,iBAAS,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;IAClD,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAA;IAClC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;CACjC,CA8BA;AAED,iBAAS,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAQlD;AAED,iBAAS,SAAS,CAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"attorney.d.ts","sourceRoot":"","sources":["../src/attorney.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAExC,QAAA,MAAM,MAAM;;;;CAIX,CAAA;AAyDD,iBAAS,iBAAiB,CAAE,MAAM,GAAE,GAAQ,QAc3C;AAED,iBAAS,aAAa,CAAE,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAgDhD;AAWD,iBAAS,gBAAgB,CAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,QA2D/C;AA2GD,iBAAS,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;IAClD,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAA;IAClC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;CACjC,CA8BA;AAED,iBAAS,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAQlD;AAED,iBAAS,SAAS,CAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,0BAA0B,CAwB9F;AAgDD,iBAAS,wBAAwB,CAAE,IAAI,EAAE,MAAM,QAK9C;AAED,iBAAS,eAAe,CAAE,IAAI,EAAE,MAAM,QAIrC;AAED,iBAAS,SAAS,CAAE,GAAG,EAAE,MAAM,QAI9B;AA2ID,OAAO,EACL,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EAClB,CAAA"}
|
package/dist/attorney.js
CHANGED
|
@@ -291,6 +291,7 @@ function getConfig(value) {
|
|
|
291
291
|
applyOpsConfig(config);
|
|
292
292
|
applyScheduleConfig(config);
|
|
293
293
|
applyBamConfig(config);
|
|
294
|
+
applyFlowConfig(config);
|
|
294
295
|
validateWarningConfig(config);
|
|
295
296
|
return config;
|
|
296
297
|
}
|
|
@@ -416,4 +417,9 @@ function applyBamConfig(config) {
|
|
|
416
417
|
assert(!('bamIntervalSeconds' in config) || config.bamIntervalSeconds >= minInterval, `configuration assert: bamIntervalSeconds must be at least ${minInterval} seconds`);
|
|
417
418
|
config.bamIntervalSeconds = config.bamIntervalSeconds || 60;
|
|
418
419
|
}
|
|
420
|
+
function applyFlowConfig(config) {
|
|
421
|
+
const minInterval = config.__test__bypass_flow_interval_check ? 0.5 : 1;
|
|
422
|
+
assert(!('flowIntervalSeconds' in config) || config.flowIntervalSeconds >= minInterval, `configuration assert: flowIntervalSeconds must be at least ${minInterval} seconds`);
|
|
423
|
+
config.flowIntervalSeconds = config.flowIntervalSeconds || 5;
|
|
424
|
+
}
|
|
419
425
|
export { assertKey, assertPostgresObjectName, assertQueueName, checkFetchArgs, checkSendArgs, checkWorkArgs, getConfig, POLICY, validateFlowJobs, validateQueueArgs };
|
package/dist/index.d.ts
CHANGED
|
@@ -61,8 +61,10 @@ export declare class PgBoss extends EventEmitter<types.PgBossEventMap> {
|
|
|
61
61
|
getQueueStats(name: string): Promise<types.QueueResult>;
|
|
62
62
|
isMaintaining(): boolean;
|
|
63
63
|
isBamWorking(): boolean;
|
|
64
|
+
isResolvingFlow(): boolean;
|
|
64
65
|
isCheckingSkew(): boolean;
|
|
65
66
|
supervise(name?: string): Promise<void>;
|
|
67
|
+
resolveFlow(): Promise<void>;
|
|
66
68
|
getWipData(options?: {
|
|
67
69
|
includeInternal?: boolean;
|
|
68
70
|
}): types.WipData[];
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import Manager from "./manager.js";
|
|
|
5
5
|
import Timekeeper from "./timekeeper.js";
|
|
6
6
|
import Boss from "./boss.js";
|
|
7
7
|
import Bam from "./bam.js";
|
|
8
|
+
import Navigator from "./navigator.js";
|
|
8
9
|
import Notifier from "./notifier.js";
|
|
9
10
|
import { delay } from "./tools.js";
|
|
10
11
|
import * as plans from "./plans.js";
|
|
@@ -16,7 +17,8 @@ export const events = Object.freeze({
|
|
|
16
17
|
warning: 'warning',
|
|
17
18
|
wip: 'wip',
|
|
18
19
|
stopped: 'stopped',
|
|
19
|
-
bam: 'bam'
|
|
20
|
+
bam: 'bam',
|
|
21
|
+
flow: 'flow'
|
|
20
22
|
});
|
|
21
23
|
export function getConstructionPlans(schema) {
|
|
22
24
|
return Contractor.constructionPlans(schema);
|
|
@@ -39,6 +41,7 @@ export class PgBoss extends EventEmitter {
|
|
|
39
41
|
#manager;
|
|
40
42
|
#timekeeper;
|
|
41
43
|
#bam;
|
|
44
|
+
#navigator;
|
|
42
45
|
#notifier;
|
|
43
46
|
constructor(value) {
|
|
44
47
|
super();
|
|
@@ -57,18 +60,21 @@ export class PgBoss extends EventEmitter {
|
|
|
57
60
|
const timekeeper = new Timekeeper(db, manager, config);
|
|
58
61
|
manager.timekeeper = timekeeper;
|
|
59
62
|
const bam = new Bam(db, config);
|
|
63
|
+
const navigator = new Navigator(db, manager, config);
|
|
60
64
|
const notifier = new Notifier(db, manager, config);
|
|
61
65
|
manager.notifier = notifier;
|
|
62
66
|
this.#promoteEvents(manager);
|
|
63
67
|
this.#promoteEvents(boss);
|
|
64
68
|
this.#promoteEvents(timekeeper);
|
|
65
69
|
this.#promoteEvents(bam);
|
|
70
|
+
this.#promoteEvents(navigator);
|
|
66
71
|
this.#promoteEvents(notifier);
|
|
67
72
|
this.#boss = boss;
|
|
68
73
|
this.#contractor = contractor;
|
|
69
74
|
this.#manager = manager;
|
|
70
75
|
this.#timekeeper = timekeeper;
|
|
71
76
|
this.#bam = bam;
|
|
77
|
+
this.#navigator = navigator;
|
|
72
78
|
this.#notifier = notifier;
|
|
73
79
|
}
|
|
74
80
|
#promoteEvents(emitter) {
|
|
@@ -98,6 +104,7 @@ export class PgBoss extends EventEmitter {
|
|
|
98
104
|
}
|
|
99
105
|
if (this.#config.supervise) {
|
|
100
106
|
await this.#boss.start();
|
|
107
|
+
await this.#navigator.start();
|
|
101
108
|
}
|
|
102
109
|
if (this.#config.schedule) {
|
|
103
110
|
await this.#timekeeper.start();
|
|
@@ -147,6 +154,7 @@ export class PgBoss extends EventEmitter {
|
|
|
147
154
|
await this.#manager.stop();
|
|
148
155
|
await this.#timekeeper.stop();
|
|
149
156
|
await this.#boss.stop();
|
|
157
|
+
await this.#navigator.stop();
|
|
150
158
|
await this.#bam.stop();
|
|
151
159
|
const shutdown = async () => {
|
|
152
160
|
await this.#manager.failWip();
|
|
@@ -265,7 +273,7 @@ export class PgBoss extends EventEmitter {
|
|
|
265
273
|
return this.#manager.deleteQueue(name);
|
|
266
274
|
}
|
|
267
275
|
getQueues(names) {
|
|
268
|
-
return this.#manager.getQueues();
|
|
276
|
+
return this.#manager.getQueues(names);
|
|
269
277
|
}
|
|
270
278
|
getQueue(name) {
|
|
271
279
|
return this.#manager.getQueue(name);
|
|
@@ -279,12 +287,20 @@ export class PgBoss extends EventEmitter {
|
|
|
279
287
|
isBamWorking() {
|
|
280
288
|
return this.#bam.working;
|
|
281
289
|
}
|
|
290
|
+
isResolvingFlow() {
|
|
291
|
+
return this.#navigator.working;
|
|
292
|
+
}
|
|
282
293
|
isCheckingSkew() {
|
|
283
294
|
return this.#timekeeper.checkingSkew;
|
|
284
295
|
}
|
|
285
296
|
supervise(name) {
|
|
286
297
|
return this.#boss.supervise(name);
|
|
287
298
|
}
|
|
299
|
+
// Force an immediate flow-resolution pass (unblock dependents of completed jobs) instead of
|
|
300
|
+
// waiting for the next background poll. Mirrors supervise() for on-demand maintenance.
|
|
301
|
+
resolveFlow() {
|
|
302
|
+
return this.#navigator.resolveNow();
|
|
303
|
+
}
|
|
288
304
|
getWipData(options) {
|
|
289
305
|
return this.#manager.getWipData(options);
|
|
290
306
|
}
|
package/dist/manager.d.ts
CHANGED
|
@@ -75,6 +75,7 @@ declare class Manager extends EventEmitter implements types.EventsMixin {
|
|
|
75
75
|
private failDistributed;
|
|
76
76
|
failJobsByTimeoutDistributed(table: string, queues: string[]): Promise<number>;
|
|
77
77
|
failJobsByHeartbeatDistributed(table: string, queues: string[]): Promise<number>;
|
|
78
|
+
resolveFlowJobsDistributed(table: string, names: string[]): Promise<number>;
|
|
78
79
|
private expireJobsDistributed;
|
|
79
80
|
private reinsertFailedJobs;
|
|
80
81
|
deleteJob(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,aAAa,CAAA;AAGtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAG7C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,UAAU,CAAA;AAmDvD,cAAM,OAAQ,SAAQ,YAAa,YAAW,KAAK,CAAC,WAAW;;IAC7D,MAAM;;;MAAS;IACf,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;QAAE,MAAM,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,EAAE,CAAA;IAC/C,MAAM,EAAE,KAAK,CAAC,0BAA0B,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;IACvC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;IAClC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAM5B,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,0BAA0B;IAe1E,MAAM,CAAC,CAAC,GAAG,MAAM,EAAG,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAYrD,UAAU,IAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.js
CHANGED
|
@@ -286,15 +286,11 @@ class Manager extends EventEmitter {
|
|
|
286
286
|
const payload = items.map(item => ({ id: item.id, output: this.mapCompletionDataArg(item.output) }));
|
|
287
287
|
const ids = items.map(item => item.id);
|
|
288
288
|
if (this.config.noMultiMutationCte) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
await tx.executeSql(plans.decrementDependents(this.config.schema), [name, blockingIds]);
|
|
295
|
-
}
|
|
296
|
-
return { jobs: ids, requested: ids.length, affected: rows.length };
|
|
297
|
-
});
|
|
289
|
+
// Dependency unblocking is handled out of band by the background resolver (Navigator), so
|
|
290
|
+
// completion is a single statement here too.
|
|
291
|
+
const sql = plans.completeJobsWithOutputsDistributed(this.config.schema, table);
|
|
292
|
+
const { rows } = await this.db.executeSql(sql, [name, JSON.stringify(payload)]);
|
|
293
|
+
return { jobs: ids, requested: ids.length, affected: rows.length };
|
|
298
294
|
}
|
|
299
295
|
const sql = plans.completeJobsWithOutputs(this.config.schema, table);
|
|
300
296
|
const result = await this.db.executeSql(sql, [name, JSON.stringify(payload)]);
|
|
@@ -988,18 +984,11 @@ class Manager extends EventEmitter {
|
|
|
988
984
|
return fn(db);
|
|
989
985
|
}
|
|
990
986
|
async completeDistributed(name, ids, outputData, table, db, includeQueued) {
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
const blockingIds = rows.filter(row => row.blocking).map(row => row.id);
|
|
997
|
-
if (blockingIds.length > 0) {
|
|
998
|
-
const decrementSql = plans.decrementDependents(this.config.schema);
|
|
999
|
-
await tx.executeSql(decrementSql, [name, blockingIds]);
|
|
1000
|
-
}
|
|
1001
|
-
return { jobs: ids, requested: ids.length, affected: rows.length };
|
|
1002
|
-
});
|
|
987
|
+
// Dependency unblocking is handled out of band by the background resolver (Navigator), so
|
|
988
|
+
// completion is a single statement on every backend.
|
|
989
|
+
const sql = plans.completeJobsDistributed(this.config.schema, table, includeQueued);
|
|
990
|
+
const { rows } = await db.executeSql(sql, [name, ids, outputData]);
|
|
991
|
+
return { jobs: ids, requested: ids.length, affected: rows.length };
|
|
1003
992
|
}
|
|
1004
993
|
async fail(name, id, data, options = {}) {
|
|
1005
994
|
Attorney.assertQueueName(name);
|
|
@@ -1047,6 +1036,32 @@ class Manager extends EventEmitter {
|
|
|
1047
1036
|
const select = plans.selectJobsToFailByHeartbeat(this.config.schema, table, queues);
|
|
1048
1037
|
return this.expireJobsDistributed(table, select, { value: { message: 'job heartbeat timeout' } });
|
|
1049
1038
|
}
|
|
1039
|
+
// Distributed flow audit for one partition table (CockroachDB / noMultiMutationCte): lock a
|
|
1040
|
+
// batch of completed blocking parents, then decrement their children and clear blocking per
|
|
1041
|
+
// parent queue (decrementDependents and clearBlocking are each keyed by a single name). Returns
|
|
1042
|
+
// the number of parents resolved so the resolver can loop until a batch drains.
|
|
1043
|
+
async resolveFlowJobsDistributed(table, names) {
|
|
1044
|
+
const select = plans.selectBlockingParents(this.config.schema, table, names, this.config.noSkipLocked);
|
|
1045
|
+
return this.withDistributedTransaction(this.db, async (tx) => {
|
|
1046
|
+
const { rows } = await tx.executeSql(select.text, select.values);
|
|
1047
|
+
if (rows.length === 0) {
|
|
1048
|
+
return 0;
|
|
1049
|
+
}
|
|
1050
|
+
const idsByName = new Map();
|
|
1051
|
+
for (const row of rows) {
|
|
1052
|
+
const list = idsByName.get(row.name) || [];
|
|
1053
|
+
list.push(row.id);
|
|
1054
|
+
idsByName.set(row.name, list);
|
|
1055
|
+
}
|
|
1056
|
+
const decrementSql = plans.decrementDependents(this.config.schema);
|
|
1057
|
+
const clearSql = plans.clearBlocking(this.config.schema);
|
|
1058
|
+
for (const [name, ids] of idsByName) {
|
|
1059
|
+
await tx.executeSql(decrementSql, [name, ids]);
|
|
1060
|
+
await tx.executeSql(clearSql, [name, ids]);
|
|
1061
|
+
}
|
|
1062
|
+
return rows.length;
|
|
1063
|
+
});
|
|
1064
|
+
}
|
|
1050
1065
|
async expireJobsDistributed(table, select, outputData) {
|
|
1051
1066
|
return this.withDistributedTransaction(this.db, async (tx) => {
|
|
1052
1067
|
const { rows: jobs } = await tx.executeSql(select.text, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationStore.d.ts","sourceRoot":"","sources":["../src/migrationStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAKnC,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IAIrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAyCD,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AASD,iBAAS,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,UAQ5G;AAED,iBAAS,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,UAQxG;AAKD,iBAAS,eAAe,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,iBAAiB,CAgCrK;AAKD,iBAAS,OAAO,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,UAIzI;
|
|
1
|
+
{"version":3,"file":"migrationStore.d.ts","sourceRoot":"","sources":["../src/migrationStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAKnC,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IAIrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAyCD,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AASD,iBAAS,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,UAQ5G;AAED,iBAAS,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,UAQxG;AAKD,iBAAS,eAAe,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,iBAAiB,CAgCrK;AAKD,iBAAS,OAAO,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,UAIzI;AAwkBD,iBAAS,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAuSlD;AAED,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,eAAe,EACf,MAAM,GACP,CAAA"}
|
package/dist/migrationStore.js
CHANGED
|
@@ -568,6 +568,92 @@ const createQueueFn = {
|
|
|
568
568
|
END;
|
|
569
569
|
$$
|
|
570
570
|
LANGUAGE plpgsql;
|
|
571
|
+
`,
|
|
572
|
+
33: (schema) => `
|
|
573
|
+
CREATE OR REPLACE FUNCTION ${schema}.create_queue(queue_name text, options jsonb)
|
|
574
|
+
RETURNS VOID AS
|
|
575
|
+
$$
|
|
576
|
+
DECLARE
|
|
577
|
+
tablename varchar := CASE WHEN options->>'partition' = 'true'
|
|
578
|
+
THEN 'j' || encode(sha224(queue_name::bytea), 'hex')
|
|
579
|
+
ELSE 'job_common'
|
|
580
|
+
END;
|
|
581
|
+
queue_created_on timestamptz;
|
|
582
|
+
BEGIN
|
|
583
|
+
|
|
584
|
+
WITH q as (
|
|
585
|
+
INSERT INTO ${schema}.queue (
|
|
586
|
+
name,
|
|
587
|
+
policy,
|
|
588
|
+
retry_limit,
|
|
589
|
+
retry_delay,
|
|
590
|
+
retry_backoff,
|
|
591
|
+
retry_delay_max,
|
|
592
|
+
expire_seconds,
|
|
593
|
+
retention_seconds,
|
|
594
|
+
deletion_seconds,
|
|
595
|
+
warning_queued,
|
|
596
|
+
dead_letter,
|
|
597
|
+
partition,
|
|
598
|
+
table_name,
|
|
599
|
+
heartbeat_seconds,
|
|
600
|
+
notify
|
|
601
|
+
)
|
|
602
|
+
VALUES (
|
|
603
|
+
queue_name,
|
|
604
|
+
options->>'policy',
|
|
605
|
+
COALESCE((options->>'retryLimit')::int, 2),
|
|
606
|
+
COALESCE((options->>'retryDelay')::int, 0),
|
|
607
|
+
COALESCE((options->>'retryBackoff')::bool, false),
|
|
608
|
+
(options->>'retryDelayMax')::int,
|
|
609
|
+
COALESCE((options->>'expireInSeconds')::int, 900),
|
|
610
|
+
COALESCE((options->>'retentionSeconds')::int, 1209600),
|
|
611
|
+
COALESCE((options->>'deleteAfterSeconds')::int, 604800),
|
|
612
|
+
COALESCE((options->>'warningQueueSize')::int, 0),
|
|
613
|
+
options->>'deadLetter',
|
|
614
|
+
COALESCE((options->>'partition')::bool, false),
|
|
615
|
+
tablename,
|
|
616
|
+
(options->>'heartbeatSeconds')::int,
|
|
617
|
+
COALESCE((options->>'notify')::bool, false)
|
|
618
|
+
)
|
|
619
|
+
ON CONFLICT DO NOTHING
|
|
620
|
+
RETURNING created_on
|
|
621
|
+
)
|
|
622
|
+
SELECT created_on into queue_created_on from q;
|
|
623
|
+
|
|
624
|
+
IF queue_created_on IS NULL OR options->>'partition' IS DISTINCT FROM 'true' THEN
|
|
625
|
+
RETURN;
|
|
626
|
+
END IF;
|
|
627
|
+
|
|
628
|
+
EXECUTE format('CREATE TABLE ${schema}.%I (LIKE ${schema}.job INCLUDING DEFAULTS)', tablename);
|
|
629
|
+
|
|
630
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD PRIMARY KEY (name, id)$cmd$, tablename);
|
|
631
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT q_fkey FOREIGN KEY (name) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
632
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT dlq_fkey FOREIGN KEY (dead_letter) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
633
|
+
|
|
634
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i5 ON ${schema}.job (name, start_after) WHERE state < 'active' AND NOT blocked$cmd$, tablename);
|
|
635
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i4 ON ${schema}.job (name, singleton_on, COALESCE(singleton_key, '')) WHERE state <> 'cancelled' AND singleton_on IS NOT NULL$cmd$, tablename);
|
|
636
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i7 ON ${schema}.job (name, group_id) WHERE state = 'active' AND group_id IS NOT NULL$cmd$, tablename);
|
|
637
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i9 ON ${schema}.job (name, id) WHERE blocking AND state = 'completed'$cmd$, tablename);
|
|
638
|
+
|
|
639
|
+
IF options->>'policy' = 'short' THEN
|
|
640
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i1 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'created' AND policy = 'short'$cmd$, tablename);
|
|
641
|
+
ELSIF options->>'policy' = 'singleton' THEN
|
|
642
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i2 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'active' AND policy = 'singleton'$cmd$, tablename);
|
|
643
|
+
ELSIF options->>'policy' = 'stately' THEN
|
|
644
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i3 ON ${schema}.job (name, state, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'stately'$cmd$, tablename);
|
|
645
|
+
ELSIF options->>'policy' = 'exclusive' THEN
|
|
646
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i6 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'exclusive'$cmd$, tablename);
|
|
647
|
+
ELSIF options->>'policy' = 'key_strict_fifo' THEN
|
|
648
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i8 ON ${schema}.job (name, singleton_key) WHERE state IN ('active', 'retry', 'failed') AND policy = 'key_strict_fifo'$cmd$, tablename);
|
|
649
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT job_key_strict_fifo_singleton_key_check CHECK (NOT (policy = 'key_strict_fifo' AND singleton_key IS NULL))$cmd$, tablename);
|
|
650
|
+
END IF;
|
|
651
|
+
|
|
652
|
+
EXECUTE format('ALTER TABLE ${schema}.%I ADD CONSTRAINT cjc CHECK (name=%L)', tablename, queue_name);
|
|
653
|
+
EXECUTE format('ALTER TABLE ${schema}.job ATTACH PARTITION ${schema}.%I FOR VALUES IN (%L)', tablename, queue_name);
|
|
654
|
+
END;
|
|
655
|
+
$$
|
|
656
|
+
LANGUAGE plpgsql;
|
|
571
657
|
`
|
|
572
658
|
};
|
|
573
659
|
function getAll(schema) {
|
|
@@ -835,6 +921,34 @@ function getAll(schema) {
|
|
|
835
921
|
createQueueFn[31](schema),
|
|
836
922
|
`ALTER TABLE ${schema}.queue DROP COLUMN notify`
|
|
837
923
|
]
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
release: '12.22.0',
|
|
927
|
+
version: 33,
|
|
928
|
+
previous: 32,
|
|
929
|
+
install: [
|
|
930
|
+
`ALTER TABLE ${schema}.version ADD COLUMN IF NOT EXISTS flow_on timestamp with time zone`,
|
|
931
|
+
// The partial job_i9 index backs the background flow resolver. Built synchronously across
|
|
932
|
+
// job_common + every existing partition (no table arg fans out), mirroring v31's job_i5
|
|
933
|
+
// rebuild; it is a tiny partial index, so the build is cheap. New partitions get it from
|
|
934
|
+
// createQueueFn[33] below.
|
|
935
|
+
`SELECT ${schema}.job_table_run($cmd$CREATE INDEX job_i9 ON ${schema}.job (name, id) WHERE blocking AND state = 'completed'$cmd$)`,
|
|
936
|
+
// Drop the covering INCLUDE from the fetch index job_i5: FOR UPDATE ... SKIP LOCKED in the
|
|
937
|
+
// fetch forces heap access, so the payload was never read from the index
|
|
938
|
+
// Rebuilt across job_common + every existing partition, same as v31's job_i5 rebuild.
|
|
939
|
+
// New partitions get the slim form from createQueueFn[33] above.
|
|
940
|
+
`SELECT ${schema}.job_table_run($cmd$DROP INDEX IF EXISTS ${schema}.job_i5$cmd$)`,
|
|
941
|
+
`SELECT ${schema}.job_table_run($cmd$CREATE INDEX job_i5 ON ${schema}.job (name, start_after) WHERE state < 'active' AND NOT blocked$cmd$)`,
|
|
942
|
+
createQueueFn[33](schema)
|
|
943
|
+
],
|
|
944
|
+
uninstall: [
|
|
945
|
+
createQueueFn[32](schema),
|
|
946
|
+
// Restore the covering INCLUDE on the fetch index (the v32 shape).
|
|
947
|
+
`SELECT ${schema}.job_table_run($cmd$DROP INDEX IF EXISTS ${schema}.job_i5$cmd$)`,
|
|
948
|
+
`SELECT ${schema}.job_table_run($cmd$CREATE INDEX job_i5 ON ${schema}.job (name, start_after) INCLUDE (priority, created_on, id) WHERE state < 'active' AND NOT blocked$cmd$)`,
|
|
949
|
+
`SELECT ${schema}.job_table_run($cmd$DROP INDEX IF EXISTS ${schema}.job_i9$cmd$)`,
|
|
950
|
+
`ALTER TABLE ${schema}.version DROP COLUMN flow_on`
|
|
951
|
+
]
|
|
838
952
|
}
|
|
839
953
|
];
|
|
840
954
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import type Manager from './manager.ts';
|
|
3
|
+
import * as types from './types.ts';
|
|
4
|
+
declare class Navigator extends EventEmitter implements types.EventsMixin {
|
|
5
|
+
#private;
|
|
6
|
+
events: {
|
|
7
|
+
error: string;
|
|
8
|
+
flow: string;
|
|
9
|
+
};
|
|
10
|
+
constructor(db: types.IDatabase, manager: Manager, config: types.ResolvedConstructorOptions);
|
|
11
|
+
get working(): boolean;
|
|
12
|
+
start(): Promise<void>;
|
|
13
|
+
stop(): Promise<void>;
|
|
14
|
+
resolveNow(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export default Navigator;
|
|
17
|
+
//# sourceMappingURL=navigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator.d.ts","sourceRoot":"","sources":["../src/navigator.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAiBnC,cAAM,SAAU,SAAQ,YAAa,YAAW,KAAK,CAAC,WAAW;;IAS/D,MAAM;;;MAAS;gBAGb,EAAE,EAAE,KAAK,CAAC,SAAS,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,CAAC,0BAA0B;IAY1C,IAAI,OAAO,IAAK,OAAO,CAEtB;IAEK,KAAK;IAYL,IAAI;IA6CJ,UAAU,IAAK,OAAO,CAAC,IAAI,CAAC;CA8DnC;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import * as plans from "./plans.js";
|
|
3
|
+
import { delay } from "./tools.js";
|
|
4
|
+
import * as types from "./types.js";
|
|
5
|
+
const events = {
|
|
6
|
+
error: 'error',
|
|
7
|
+
flow: 'flow'
|
|
8
|
+
};
|
|
9
|
+
// Cap audit batches per resolve pass so a large backlog can't monopolize the loop; whatever is
|
|
10
|
+
// left over is picked up on the next poll.
|
|
11
|
+
const MAX_BATCHES_PER_PASS = 100;
|
|
12
|
+
// Background flow resolver. Completion is kept on a join-free hot path (see issue #824); the
|
|
13
|
+
// dependency bookkeeping that used to run inline now happens here, out of band. Modeled on the
|
|
14
|
+
// Bam poller: on each tick it claims the cluster-wide cadence gate (version.flow_on) and, if it
|
|
15
|
+
// wins, audits for completed "blocking" parents via the job_i9 partial index, decrements their
|
|
16
|
+
// children, unblocks those reaching zero, and clears the parents' blocking flag so they are not
|
|
17
|
+
// reprocessed. The Guild Navigator that keeps the spice flowing.
|
|
18
|
+
class Navigator extends EventEmitter {
|
|
19
|
+
#stopped;
|
|
20
|
+
#stopping;
|
|
21
|
+
#working;
|
|
22
|
+
#pollInterval;
|
|
23
|
+
#db;
|
|
24
|
+
#manager;
|
|
25
|
+
#config;
|
|
26
|
+
events = events;
|
|
27
|
+
constructor(db, manager, config) {
|
|
28
|
+
super();
|
|
29
|
+
this.#db = db;
|
|
30
|
+
this.#manager = manager;
|
|
31
|
+
this.#config = config;
|
|
32
|
+
this.#stopped = true;
|
|
33
|
+
this.#stopping = false;
|
|
34
|
+
this.#working = false;
|
|
35
|
+
}
|
|
36
|
+
get working() {
|
|
37
|
+
return this.#working;
|
|
38
|
+
}
|
|
39
|
+
async start() {
|
|
40
|
+
if (!this.#stopped)
|
|
41
|
+
return;
|
|
42
|
+
this.#stopped = false;
|
|
43
|
+
this.#stopping = false;
|
|
44
|
+
setImmediate(() => this.#onPoll());
|
|
45
|
+
this.#pollInterval = setInterval(() => this.#onPoll(), this.#config.flowIntervalSeconds * 1000);
|
|
46
|
+
}
|
|
47
|
+
async stop() {
|
|
48
|
+
if (this.#stopped)
|
|
49
|
+
return;
|
|
50
|
+
this.#stopping = true;
|
|
51
|
+
this.#stopped = true;
|
|
52
|
+
if (this.#pollInterval) {
|
|
53
|
+
clearInterval(this.#pollInterval);
|
|
54
|
+
this.#pollInterval = undefined;
|
|
55
|
+
}
|
|
56
|
+
while (this.#working) {
|
|
57
|
+
await delay(10);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async #onPoll() {
|
|
61
|
+
if (this.#stopped || this.#working)
|
|
62
|
+
return;
|
|
63
|
+
this.#working = true;
|
|
64
|
+
try {
|
|
65
|
+
if (this.#config.__test__throw_flow) {
|
|
66
|
+
throw new Error(this.#config.__test__throw_flow);
|
|
67
|
+
}
|
|
68
|
+
if (this.#config.__test__delay_flow_ms) {
|
|
69
|
+
await delay(this.#config.__test__delay_flow_ms);
|
|
70
|
+
}
|
|
71
|
+
const gate = plans.trySetFlowTime(this.#config.schema, this.#config.flowIntervalSeconds);
|
|
72
|
+
const { rows } = await this.#db.executeSql(gate);
|
|
73
|
+
if (rows.length === 1) {
|
|
74
|
+
await this.#resolve();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
this.emit(events.error, err);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
this.#working = false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// On-demand, ungated resolution pass. Like boss.supervise(), it is callable whether or not the
|
|
85
|
+
// background poll is running, so tests and apps can resolve flows deterministically. It skips
|
|
86
|
+
// the version-table cadence gate but still serializes against an in-flight poll via #working.
|
|
87
|
+
async resolveNow() {
|
|
88
|
+
while (this.#working) {
|
|
89
|
+
await delay(10);
|
|
90
|
+
}
|
|
91
|
+
if (this.#stopping)
|
|
92
|
+
return;
|
|
93
|
+
this.#working = true;
|
|
94
|
+
try {
|
|
95
|
+
await this.#resolve();
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
this.#working = false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async #resolve() {
|
|
102
|
+
const queues = await this.#manager.getQueues();
|
|
103
|
+
// Group queues by partition table so each audit statement targets a single table and prunes to
|
|
104
|
+
// the chunk's queue names (mirrors boss.supervise()'s grouping).
|
|
105
|
+
const queueGroups = queues.reduce((acc, q) => {
|
|
106
|
+
acc[q.table] = acc[q.table] || { table: q.table, names: [] };
|
|
107
|
+
acc[q.table].names.push(q.name);
|
|
108
|
+
return acc;
|
|
109
|
+
}, {});
|
|
110
|
+
for (const group of Object.values(queueGroups)) {
|
|
111
|
+
if (this.#stopping)
|
|
112
|
+
return;
|
|
113
|
+
const { table } = group;
|
|
114
|
+
const names = [...group.names];
|
|
115
|
+
while (names.length) {
|
|
116
|
+
if (this.#stopping)
|
|
117
|
+
return;
|
|
118
|
+
const chunk = names.splice(0, 100);
|
|
119
|
+
let batches = 0;
|
|
120
|
+
let resolved = 0;
|
|
121
|
+
do {
|
|
122
|
+
if (this.#stopping)
|
|
123
|
+
return;
|
|
124
|
+
resolved = this.#config.noMultiMutationCte
|
|
125
|
+
? await this.#manager.resolveFlowJobsDistributed(table, chunk)
|
|
126
|
+
: await this.#resolveStandard(table, chunk);
|
|
127
|
+
if (resolved > 0) {
|
|
128
|
+
this.emit(events.flow, { table, resolved });
|
|
129
|
+
}
|
|
130
|
+
} while (resolved >= plans.FLOW_BATCH_SIZE && ++batches < MAX_BATCHES_PER_PASS && !this.#stopping);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async #resolveStandard(table, names) {
|
|
135
|
+
const query = plans.resolveFlowJobs(this.#config.schema, table, names);
|
|
136
|
+
const { rows } = await this.#db.executeSql(query.text, query.values);
|
|
137
|
+
// CockroachDB returns integer columns as strings; coerce so the drain-loop comparison is numeric.
|
|
138
|
+
return Number(rows[0]?.resolved ?? 0);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export default Navigator;
|
package/dist/plans.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export declare function trySetQueueMonitorTime(schema: string, queues: string[],
|
|
|
45
45
|
export declare function trySetQueueDeletionTime(schema: string, queues: string[], seconds: number): SqlQuery;
|
|
46
46
|
export declare function trySetCronTime(schema: string, seconds: number): string;
|
|
47
47
|
export declare function trySetBamTime(schema: string, seconds: number): string;
|
|
48
|
+
export declare function trySetFlowTime(schema: string, seconds: number): string;
|
|
48
49
|
export declare function updateQueue(schema: string, { deadLetter }?: UpdateQueueOptions): string;
|
|
49
50
|
export declare function getQueues(schema: string, names?: string[]): SqlQuery;
|
|
50
51
|
export declare function deleteJobsById(schema: string, table: string): string;
|
|
@@ -136,6 +137,10 @@ export declare function selectJobsToFailByHeartbeat(schema: string, table: strin
|
|
|
136
137
|
export declare function deleteJobsByIds(schema: string, table: string): SqlQuery;
|
|
137
138
|
export declare function completeJobsDistributed(schema: string, table: string, includeQueued?: boolean): string;
|
|
138
139
|
export declare function decrementDependents(schema: string): string;
|
|
140
|
+
export declare const FLOW_BATCH_SIZE = 1000;
|
|
141
|
+
export declare function resolveFlowJobs(schema: string, table: string, names: string[]): SqlQuery;
|
|
142
|
+
export declare function selectBlockingParents(schema: string, table: string, names: string[], noSkipLocked?: boolean): SqlQuery;
|
|
143
|
+
export declare function clearBlocking(schema: string): string;
|
|
139
144
|
export declare function insertRetryJob(schema: string, table: string): string;
|
|
140
145
|
export declare function insertDeadLetterJob(schema: string): string;
|
|
141
146
|
export declare function deletion(schema: string, table: string, queues: string[], noAdvisoryLocks?: boolean): string;
|
package/dist/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,EAAE,CAAA;CAClB;AAED,eAAO,MAAM,QAAQ;;CAEpB,CAAA;AAED,eAAO,MAAM,cAAc,WAAW,CAAA;AACtC,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AACtD,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AAMnD,eAAO,MAAM,UAAU;;;;;;;EAOrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAA;AAeF,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAgB,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,UAyC/E;
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.js
CHANGED
|
@@ -90,7 +90,8 @@ function createTableVersion(schema) {
|
|
|
90
90
|
CREATE TABLE ${schema}.version (
|
|
91
91
|
version int primary key,
|
|
92
92
|
cron_on timestamp with time zone,
|
|
93
|
-
bam_on timestamp with time zone
|
|
93
|
+
bam_on timestamp with time zone,
|
|
94
|
+
flow_on timestamp with time zone
|
|
94
95
|
)
|
|
95
96
|
`;
|
|
96
97
|
}
|
|
@@ -365,6 +366,7 @@ function createTableJobCommon(schema) {
|
|
|
365
366
|
SELECT ${schema}.job_table_run($cmd$${createIndexJobThrottle(schema)}$cmd$, '${COMMON_JOB_TABLE}');
|
|
366
367
|
SELECT ${schema}.job_table_run($cmd$${createIndexJobFetch(schema)}$cmd$, '${COMMON_JOB_TABLE}');
|
|
367
368
|
SELECT ${schema}.job_table_run($cmd$${createIndexJobGroupConcurrency(schema)}$cmd$, '${COMMON_JOB_TABLE}');
|
|
369
|
+
SELECT ${schema}.job_table_run($cmd$${createIndexJobBlocking(schema)}$cmd$, '${COMMON_JOB_TABLE}');
|
|
368
370
|
|
|
369
371
|
ALTER TABLE ${schema}.job ATTACH PARTITION ${schema}.${COMMON_JOB_TABLE} DEFAULT;
|
|
370
372
|
`;
|
|
@@ -383,6 +385,7 @@ function createTableJobIndexes(schema, noDeferrableConstraints = false, noCoveri
|
|
|
383
385
|
${createIndexJobThrottle(schema)};
|
|
384
386
|
${createIndexJobFetch(schema, noCoveringIndex)};
|
|
385
387
|
${createIndexJobGroupConcurrency(schema)};
|
|
388
|
+
${createIndexJobBlocking(schema)};
|
|
386
389
|
`;
|
|
387
390
|
}
|
|
388
391
|
function createQueueFunction(schema, noPartitioning = false) {
|
|
@@ -496,6 +499,7 @@ function createQueueFunction(schema, noPartitioning = false) {
|
|
|
496
499
|
EXECUTE ${schema}.job_table_format($cmd$${createIndexJobFetch(schema)}$cmd$, tablename);
|
|
497
500
|
EXECUTE ${schema}.job_table_format($cmd$${createIndexJobThrottle(schema)}$cmd$, tablename);
|
|
498
501
|
EXECUTE ${schema}.job_table_format($cmd$${createIndexJobGroupConcurrency(schema)}$cmd$, tablename);
|
|
502
|
+
EXECUTE ${schema}.job_table_format($cmd$${createIndexJobBlocking(schema)}$cmd$, tablename);
|
|
499
503
|
|
|
500
504
|
IF options->>'policy' = 'short' THEN
|
|
501
505
|
EXECUTE ${schema}.job_table_format($cmd$${createIndexJobPolicyShort(schema)}$cmd$, tablename);
|
|
@@ -602,10 +606,12 @@ function createIndexJobThrottle(schema) {
|
|
|
602
606
|
return `CREATE UNIQUE INDEX job_i4 ON ${schema}.job (name, singleton_on, COALESCE(singleton_key, '')) WHERE state <> '${JOB_STATES.cancelled}' AND singleton_on IS NOT NULL`;
|
|
603
607
|
}
|
|
604
608
|
function createIndexJobFetch(schema, noCoveringIndex = false) {
|
|
605
|
-
//
|
|
606
|
-
// so
|
|
607
|
-
|
|
608
|
-
|
|
609
|
+
// No covering INCLUDE: the fetch locks candidate rows with FOR UPDATE ... SKIP LOCKED, which
|
|
610
|
+
// forces heap access, so an index-only scan is impossible and a covering payload would never be
|
|
611
|
+
// read from the index. Confirmed dead weight via EXPLAIN ANALYZE (see examples/index-perf);
|
|
612
|
+
// dropping it shrinks job_i5 on the hot insert path at no read-side cost.
|
|
613
|
+
// noCoveringIndex (the CockroachDB profile flag that stripped the old INCLUDE) is now moot here.
|
|
614
|
+
return `CREATE INDEX job_i5 ON ${schema}.job (name, start_after) WHERE state < '${JOB_STATES.active}' AND NOT blocked`;
|
|
609
615
|
}
|
|
610
616
|
function createIndexJobPolicyExclusive(schema) {
|
|
611
617
|
return `CREATE UNIQUE INDEX job_i6 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state <= '${JOB_STATES.active}' AND policy = '${QUEUE_POLICIES.exclusive}'`;
|
|
@@ -619,6 +625,13 @@ function createCheckConstraintKeyStrictFifo(schema) {
|
|
|
619
625
|
function createIndexJobGroupConcurrency(schema) {
|
|
620
626
|
return `CREATE INDEX job_i7 ON ${schema}.job (name, group_id) WHERE state = '${JOB_STATES.active}' AND group_id IS NOT NULL`;
|
|
621
627
|
}
|
|
628
|
+
// Partial index supporting the background flow resolver (Navigator): lets it find completed
|
|
629
|
+
// blocking parents with an index scan instead of a partition-wide scan. The `state = completed`
|
|
630
|
+
// predicate keeps still-running and permanently-failed blocking parents out of the index, so
|
|
631
|
+
// non-flow queues (and high-partition-count deployments) carry an empty index that costs nothing.
|
|
632
|
+
function createIndexJobBlocking(schema) {
|
|
633
|
+
return `CREATE INDEX job_i9 ON ${schema}.job (name, id) WHERE blocking AND state = '${JOB_STATES.completed}'`;
|
|
634
|
+
}
|
|
622
635
|
export function trySetQueueMonitorTime(schema, queues, seconds) {
|
|
623
636
|
return trySetQueueTimestamp(schema, queues, 'monitor_on', seconds);
|
|
624
637
|
}
|
|
@@ -631,6 +644,9 @@ export function trySetCronTime(schema, seconds) {
|
|
|
631
644
|
export function trySetBamTime(schema, seconds) {
|
|
632
645
|
return trySetTimestamp(schema, 'bam_on', seconds);
|
|
633
646
|
}
|
|
647
|
+
export function trySetFlowTime(schema, seconds) {
|
|
648
|
+
return trySetTimestamp(schema, 'flow_on', seconds);
|
|
649
|
+
}
|
|
634
650
|
function trySetTimestamp(schema, column, seconds) {
|
|
635
651
|
return `
|
|
636
652
|
UPDATE ${schema}.version
|
|
@@ -717,7 +733,7 @@ export function deleteJobsById(schema, table) {
|
|
|
717
733
|
WITH results as (
|
|
718
734
|
DELETE FROM ${schema}.${table}
|
|
719
735
|
WHERE name = $1
|
|
720
|
-
AND id
|
|
736
|
+
AND id = ANY($2::uuid[])
|
|
721
737
|
RETURNING 1
|
|
722
738
|
)
|
|
723
739
|
SELECT COUNT(*) from results
|
|
@@ -1031,7 +1047,7 @@ function completeJobsUpdate(schema, table, includeQueued) {
|
|
|
1031
1047
|
blocked = ${includeQueued ? 'false' : 'blocked'},
|
|
1032
1048
|
pending_dependencies = ${includeQueued ? '0' : 'pending_dependencies'}
|
|
1033
1049
|
WHERE name = $1
|
|
1034
|
-
AND id
|
|
1050
|
+
AND id = ANY($2::uuid[])
|
|
1035
1051
|
AND ${includeQueued
|
|
1036
1052
|
? `state < '${JOB_STATES.completed}'`
|
|
1037
1053
|
: `state = '${JOB_STATES.active}'`}`;
|
|
@@ -1058,26 +1074,17 @@ function unblockChildrenUpdate(schema) {
|
|
|
1058
1074
|
WHERE j.name = lc.name
|
|
1059
1075
|
AND j.id = lc.id`;
|
|
1060
1076
|
}
|
|
1077
|
+
// Dependency unblocking is intentionally NOT done here. Completion is the hot path; chasing
|
|
1078
|
+
// dependents inline (joining job_dependency and the partitioned job table) made completion
|
|
1079
|
+
// scale with partition count (see issue #824). The background resolver (Navigator) handles
|
|
1080
|
+
// unblocking out of band, driven by the job_i9 partial index.
|
|
1061
1081
|
export function completeJobs(schema, table, includeQueued) {
|
|
1062
1082
|
return `
|
|
1063
|
-
WITH
|
|
1083
|
+
WITH results AS (
|
|
1064
1084
|
${completeJobsUpdate(schema, table, includeQueued)}
|
|
1065
|
-
RETURNING name, id, blocking
|
|
1066
|
-
),
|
|
1067
|
-
decremented AS (
|
|
1068
|
-
SELECT d.child_name, d.child_id, COUNT(*)::int AS n
|
|
1069
|
-
FROM ${schema}.job_dependency d
|
|
1070
|
-
JOIN completed c ON c.blocking
|
|
1071
|
-
AND d.parent_name = c.name
|
|
1072
|
-
AND d.parent_id = c.id
|
|
1073
|
-
GROUP BY d.child_name, d.child_id
|
|
1074
|
-
),
|
|
1075
|
-
${lockedChildrenCte(schema)},
|
|
1076
|
-
unblocked AS (
|
|
1077
|
-
${unblockChildrenUpdate(schema)}
|
|
1078
1085
|
RETURNING 1
|
|
1079
1086
|
)
|
|
1080
|
-
SELECT COUNT(*) FROM
|
|
1087
|
+
SELECT COUNT(*) FROM results
|
|
1081
1088
|
`;
|
|
1082
1089
|
}
|
|
1083
1090
|
// Per-job-output completion: each job's output is supplied via a JSON recordset ($2) and applied by
|
|
@@ -1088,7 +1095,7 @@ export function completeJobsWithOutputs(schema, table) {
|
|
|
1088
1095
|
WITH input AS (
|
|
1089
1096
|
SELECT * FROM json_to_recordset($2::json) AS x (id uuid, output jsonb)
|
|
1090
1097
|
),
|
|
1091
|
-
|
|
1098
|
+
results AS (
|
|
1092
1099
|
UPDATE ${schema}.${table} j
|
|
1093
1100
|
SET completed_on = now(),
|
|
1094
1101
|
state = '${JOB_STATES.completed}',
|
|
@@ -1097,27 +1104,14 @@ export function completeJobsWithOutputs(schema, table) {
|
|
|
1097
1104
|
WHERE j.name = $1
|
|
1098
1105
|
AND j.id = i.id
|
|
1099
1106
|
AND j.state = '${JOB_STATES.active}'
|
|
1100
|
-
RETURNING j.name, j.id, j.blocking
|
|
1101
|
-
),
|
|
1102
|
-
decremented AS (
|
|
1103
|
-
SELECT d.child_name, d.child_id, COUNT(*)::int AS n
|
|
1104
|
-
FROM ${schema}.job_dependency d
|
|
1105
|
-
JOIN completed c ON c.blocking
|
|
1106
|
-
AND d.parent_name = c.name
|
|
1107
|
-
AND d.parent_id = c.id
|
|
1108
|
-
GROUP BY d.child_name, d.child_id
|
|
1109
|
-
),
|
|
1110
|
-
${lockedChildrenCte(schema)},
|
|
1111
|
-
unblocked AS (
|
|
1112
|
-
${unblockChildrenUpdate(schema)}
|
|
1113
1107
|
RETURNING 1
|
|
1114
1108
|
)
|
|
1115
|
-
SELECT COUNT(*) FROM
|
|
1109
|
+
SELECT COUNT(*) FROM results
|
|
1116
1110
|
`;
|
|
1117
1111
|
}
|
|
1118
1112
|
// Distributed equivalent of completeJobsWithOutputs: a single mutation that returns the completed
|
|
1119
|
-
// ids
|
|
1120
|
-
//
|
|
1113
|
+
// ids. Dependency unblocking is handled out of band by the background resolver (Navigator), so
|
|
1114
|
+
// completion does no dependency work on any backend.
|
|
1121
1115
|
export function completeJobsWithOutputsDistributed(schema, table) {
|
|
1122
1116
|
return `
|
|
1123
1117
|
WITH input AS (
|
|
@@ -1131,7 +1125,7 @@ export function completeJobsWithOutputsDistributed(schema, table) {
|
|
|
1131
1125
|
WHERE j.name = $1
|
|
1132
1126
|
AND j.id = i.id
|
|
1133
1127
|
AND j.state = '${JOB_STATES.active}'
|
|
1134
|
-
RETURNING j.id
|
|
1128
|
+
RETURNING j.id
|
|
1135
1129
|
`;
|
|
1136
1130
|
}
|
|
1137
1131
|
export function cancelJobs(schema, table) {
|
|
@@ -1141,7 +1135,7 @@ export function cancelJobs(schema, table) {
|
|
|
1141
1135
|
SET completed_on = now(),
|
|
1142
1136
|
state = '${JOB_STATES.cancelled}'
|
|
1143
1137
|
WHERE name = $1
|
|
1144
|
-
AND id
|
|
1138
|
+
AND id = ANY($2::uuid[])
|
|
1145
1139
|
AND state < '${JOB_STATES.completed}'
|
|
1146
1140
|
RETURNING 1
|
|
1147
1141
|
)
|
|
@@ -1155,7 +1149,7 @@ export function resumeJobs(schema, table) {
|
|
|
1155
1149
|
SET completed_on = NULL,
|
|
1156
1150
|
state = '${JOB_STATES.created}'
|
|
1157
1151
|
WHERE name = $1
|
|
1158
|
-
AND id
|
|
1152
|
+
AND id = ANY($2::uuid[])
|
|
1159
1153
|
AND state = '${JOB_STATES.cancelled}'
|
|
1160
1154
|
RETURNING 1
|
|
1161
1155
|
)
|
|
@@ -1169,7 +1163,7 @@ export function restoreJobs(schema, table) {
|
|
|
1169
1163
|
started_on = NULL,
|
|
1170
1164
|
heartbeat_on = NULL
|
|
1171
1165
|
WHERE name = $1
|
|
1172
|
-
AND id
|
|
1166
|
+
AND id = ANY($2::uuid[])
|
|
1173
1167
|
`;
|
|
1174
1168
|
}
|
|
1175
1169
|
export function insertJobs(schema, { table, name, returnId = true, notify = false }) {
|
|
@@ -1297,7 +1291,7 @@ export function insertFlowJobs(schema, { table, name }, jobs) {
|
|
|
1297
1291
|
`;
|
|
1298
1292
|
}
|
|
1299
1293
|
export function failJobsById(schema, table) {
|
|
1300
|
-
const where = `name = $1 AND id
|
|
1294
|
+
const where = `name = $1 AND id = ANY($2::uuid[]) AND state < '${JOB_STATES.completed}'`;
|
|
1301
1295
|
const output = '$3::jsonb';
|
|
1302
1296
|
return failJobs(schema, table, where, output);
|
|
1303
1297
|
}
|
|
@@ -1322,7 +1316,7 @@ export function touchJobs(schema, table) {
|
|
|
1322
1316
|
UPDATE ${schema}.${table}
|
|
1323
1317
|
SET heartbeat_on = now()
|
|
1324
1318
|
WHERE name = $1
|
|
1325
|
-
AND id
|
|
1319
|
+
AND id = ANY($2::uuid[])
|
|
1326
1320
|
AND state = '${JOB_STATES.active}'
|
|
1327
1321
|
RETURNING 1
|
|
1328
1322
|
)
|
|
@@ -1549,13 +1543,13 @@ export function deadLetterJobsByIdWithOutputs(schema, table) {
|
|
|
1549
1543
|
// Distributed mode: separate queries to avoid CockroachDB's multi-mutation CTE limitation
|
|
1550
1544
|
export function selectJobsToFailById(schema, table) {
|
|
1551
1545
|
return {
|
|
1552
|
-
text: `SELECT * FROM ${schema}.${table} WHERE name = $1 AND id
|
|
1546
|
+
text: `SELECT * FROM ${schema}.${table} WHERE name = $1 AND id = ANY($2::uuid[]) AND state < '${JOB_STATES.completed}'`,
|
|
1553
1547
|
values: []
|
|
1554
1548
|
};
|
|
1555
1549
|
}
|
|
1556
1550
|
export function deleteJobsToFail(schema, table) {
|
|
1557
1551
|
return {
|
|
1558
|
-
text: `DELETE FROM ${schema}.${table} WHERE name = $1 AND id
|
|
1552
|
+
text: `DELETE FROM ${schema}.${table} WHERE name = $1 AND id = ANY($2::uuid[])`,
|
|
1559
1553
|
values: []
|
|
1560
1554
|
};
|
|
1561
1555
|
}
|
|
@@ -1584,37 +1578,112 @@ export function selectJobsToFailByHeartbeat(schema, table, queues) {
|
|
|
1584
1578
|
}
|
|
1585
1579
|
export function deleteJobsByIds(schema, table) {
|
|
1586
1580
|
return {
|
|
1587
|
-
text: `DELETE FROM ${schema}.${table} WHERE id
|
|
1581
|
+
text: `DELETE FROM ${schema}.${table} WHERE id = ANY($1::uuid[])`,
|
|
1588
1582
|
values: []
|
|
1589
1583
|
};
|
|
1590
1584
|
}
|
|
1591
|
-
// Distributed mode: complete jobs
|
|
1592
|
-
//
|
|
1593
|
-
// completeJobs() because it updates both the job table and job (for unblocking)
|
|
1594
|
-
// within one statement. The unblocking is handled separately by decrementDependents().
|
|
1585
|
+
// Distributed mode: complete jobs as a single-table mutation. Dependency unblocking is handled
|
|
1586
|
+
// out of band by the background resolver (Navigator), so completion does no dependency work.
|
|
1595
1587
|
export function completeJobsDistributed(schema, table, includeQueued) {
|
|
1596
1588
|
return `
|
|
1597
1589
|
${completeJobsUpdate(schema, table, includeQueued)}
|
|
1598
|
-
RETURNING id
|
|
1590
|
+
RETURNING id
|
|
1599
1591
|
`;
|
|
1600
1592
|
}
|
|
1601
|
-
//
|
|
1602
|
-
//
|
|
1603
|
-
//
|
|
1604
|
-
//
|
|
1593
|
+
// Decrement pending_dependencies for children of the given completed parent jobs, unblocking
|
|
1594
|
+
// any that reach zero. Only the final UPDATE mutates job, so this is a single mutation acceptable
|
|
1595
|
+
// to CockroachDB. Used by the distributed flow resolver path. $1 is the parent queue name, $2 the
|
|
1596
|
+
// list of resolved parent ids for that queue.
|
|
1605
1597
|
export function decrementDependents(schema) {
|
|
1606
1598
|
return `
|
|
1607
1599
|
WITH decremented AS (
|
|
1608
1600
|
SELECT d.child_name, d.child_id, COUNT(*)::int AS n
|
|
1609
1601
|
FROM ${schema}.job_dependency d
|
|
1610
1602
|
WHERE d.parent_name = $1
|
|
1611
|
-
AND d.parent_id
|
|
1603
|
+
AND d.parent_id = ANY($2::uuid[])
|
|
1612
1604
|
GROUP BY d.child_name, d.child_id
|
|
1613
1605
|
),
|
|
1614
1606
|
${lockedChildrenCte(schema)}
|
|
1615
1607
|
${unblockChildrenUpdate(schema)}
|
|
1616
1608
|
`;
|
|
1617
1609
|
}
|
|
1610
|
+
// Background flow resolver (Navigator) batch size: the max number of completed blocking parents
|
|
1611
|
+
// locked per audit statement. The resolver loops until a batch drains, so this only bounds the
|
|
1612
|
+
// lock footprint and per-statement cost.
|
|
1613
|
+
export const FLOW_BATCH_SIZE = 1000;
|
|
1614
|
+
// Standard (multi-mutation CTE) flow audit. Locks a batch of completed blocking parents in the
|
|
1615
|
+
// given partition table, decrements their children's pending_dependencies (reusing the shared
|
|
1616
|
+
// unblock fragments, which reach across partitions via the parent job table), unblocks children
|
|
1617
|
+
// that reach zero, and clears `blocking` on the resolved parents so they leave the job_i9 index
|
|
1618
|
+
// and are never reprocessed. $1 is the chunk of queue names (for partition pruning). Returns the
|
|
1619
|
+
// number of parents resolved so the caller can loop until a batch drains.
|
|
1620
|
+
export function resolveFlowJobs(schema, table, names) {
|
|
1621
|
+
return {
|
|
1622
|
+
text: `
|
|
1623
|
+
WITH locked_parents AS (
|
|
1624
|
+
SELECT j.name, j.id
|
|
1625
|
+
FROM ${schema}.${table} j
|
|
1626
|
+
WHERE j.blocking
|
|
1627
|
+
AND j.state = '${JOB_STATES.completed}'
|
|
1628
|
+
AND j.name = ANY($1::text[])
|
|
1629
|
+
ORDER BY j.name, j.id
|
|
1630
|
+
FOR UPDATE OF j SKIP LOCKED
|
|
1631
|
+
LIMIT ${FLOW_BATCH_SIZE}
|
|
1632
|
+
),
|
|
1633
|
+
decremented AS (
|
|
1634
|
+
SELECT d.child_name, d.child_id, COUNT(*)::int AS n
|
|
1635
|
+
FROM ${schema}.job_dependency d
|
|
1636
|
+
JOIN locked_parents p ON d.parent_name = p.name
|
|
1637
|
+
AND d.parent_id = p.id
|
|
1638
|
+
GROUP BY d.child_name, d.child_id
|
|
1639
|
+
),
|
|
1640
|
+
${lockedChildrenCte(schema)},
|
|
1641
|
+
unblocked AS (
|
|
1642
|
+
${unblockChildrenUpdate(schema)}
|
|
1643
|
+
RETURNING 1
|
|
1644
|
+
),
|
|
1645
|
+
cleared AS (
|
|
1646
|
+
UPDATE ${schema}.${table} j
|
|
1647
|
+
SET blocking = false
|
|
1648
|
+
FROM locked_parents p
|
|
1649
|
+
WHERE j.name = p.name
|
|
1650
|
+
AND j.id = p.id
|
|
1651
|
+
RETURNING 1
|
|
1652
|
+
)
|
|
1653
|
+
SELECT COUNT(*)::int AS resolved FROM cleared
|
|
1654
|
+
`,
|
|
1655
|
+
values: [names]
|
|
1656
|
+
};
|
|
1657
|
+
}
|
|
1658
|
+
// Distributed flow audit (CockroachDB / noMultiMutationCte). Locks a batch of completed blocking
|
|
1659
|
+
// parents without mutating, so the caller can run the single-mutation decrementDependents() and
|
|
1660
|
+
// clearBlocking() separately within one transaction. $1 is the chunk of queue names; SKIP LOCKED
|
|
1661
|
+
// is omitted under noSkipLocked.
|
|
1662
|
+
export function selectBlockingParents(schema, table, names, noSkipLocked) {
|
|
1663
|
+
return {
|
|
1664
|
+
text: `
|
|
1665
|
+
SELECT name, id
|
|
1666
|
+
FROM ${schema}.${table}
|
|
1667
|
+
WHERE blocking
|
|
1668
|
+
AND state = '${JOB_STATES.completed}'
|
|
1669
|
+
AND name = ANY($1::text[])
|
|
1670
|
+
ORDER BY name, id
|
|
1671
|
+
FOR UPDATE${noSkipLocked ? '' : ' SKIP LOCKED'}
|
|
1672
|
+
LIMIT ${FLOW_BATCH_SIZE}
|
|
1673
|
+
`,
|
|
1674
|
+
values: [names]
|
|
1675
|
+
};
|
|
1676
|
+
}
|
|
1677
|
+
// Distributed flow audit: clear `blocking` on resolved parents (single mutation). $1 is the parent
|
|
1678
|
+
// queue name, $2 the list of resolved parent ids for that queue.
|
|
1679
|
+
export function clearBlocking(schema) {
|
|
1680
|
+
return `
|
|
1681
|
+
UPDATE ${schema}.job
|
|
1682
|
+
SET blocking = false
|
|
1683
|
+
WHERE name = $1
|
|
1684
|
+
AND id = ANY($2::uuid[])
|
|
1685
|
+
`;
|
|
1686
|
+
}
|
|
1618
1687
|
export function insertRetryJob(schema, table) {
|
|
1619
1688
|
return `
|
|
1620
1689
|
INSERT INTO ${schema}.${table} (
|
|
@@ -1657,7 +1726,7 @@ export function retryJobs(schema, table) {
|
|
|
1657
1726
|
SET state = '${JOB_STATES.retry}',
|
|
1658
1727
|
retry_limit = retry_limit + 1
|
|
1659
1728
|
WHERE name = $1
|
|
1660
|
-
AND id
|
|
1729
|
+
AND id = ANY($2::uuid[])
|
|
1661
1730
|
AND state = '${JOB_STATES.failed}'
|
|
1662
1731
|
RETURNING 1
|
|
1663
1732
|
)
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type Events = {
|
|
|
12
12
|
wip: 'wip';
|
|
13
13
|
stopped: 'stopped';
|
|
14
14
|
bam: 'bam';
|
|
15
|
+
flow: 'flow';
|
|
15
16
|
};
|
|
16
17
|
export interface IDatabase {
|
|
17
18
|
executeSql(text: string, values?: unknown[]): Promise<{
|
|
@@ -79,6 +80,7 @@ export interface MaintenanceOptions {
|
|
|
79
80
|
persistWarnings?: boolean;
|
|
80
81
|
warningRetentionDays?: number;
|
|
81
82
|
bamIntervalSeconds?: number;
|
|
83
|
+
flowIntervalSeconds?: number;
|
|
82
84
|
}
|
|
83
85
|
/**
|
|
84
86
|
* Options for running pg-boss against a specific database backend.
|
|
@@ -623,6 +625,10 @@ export interface BamStatusSummary {
|
|
|
623
625
|
count: number;
|
|
624
626
|
lastCreatedOn: Date;
|
|
625
627
|
}
|
|
628
|
+
export interface FlowEvent {
|
|
629
|
+
table: string;
|
|
630
|
+
resolved: number;
|
|
631
|
+
}
|
|
626
632
|
export interface BamEvent {
|
|
627
633
|
id: string;
|
|
628
634
|
name: string;
|
|
@@ -637,5 +643,6 @@ export type PgBossEventMap = {
|
|
|
637
643
|
wip: [data: WipData[]];
|
|
638
644
|
stopped: [];
|
|
639
645
|
bam: [data: BamEvent];
|
|
646
|
+
flow: [data: FlowEvent];
|
|
640
647
|
};
|
|
641
648
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-boss",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.22.0",
|
|
4
4
|
"description": "Queueing jobs in Postgres from Node.js like a boss",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"node": ">=22.12.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"cron-parser": "^5.6.
|
|
15
|
+
"cron-parser": "^5.6.1",
|
|
16
16
|
"pg": "^8.22.0",
|
|
17
17
|
"serialize-error": "^13.0.1"
|
|
18
18
|
},
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"docs:readme": "node ./scripts/sync-readme.js"
|
|
62
62
|
},
|
|
63
63
|
"pgboss": {
|
|
64
|
-
"schema":
|
|
64
|
+
"schema": 33
|
|
65
65
|
},
|
|
66
66
|
"repository": {
|
|
67
67
|
"type": "git",
|