pg-boss 12.15.0 → 12.16.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/manager.js +1 -1
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +33 -17
- package/package.json +3 -3
package/dist/manager.js
CHANGED
|
@@ -34,7 +34,7 @@ class Manager extends EventEmitter {
|
|
|
34
34
|
this.db = db;
|
|
35
35
|
this.wipTs = Date.now();
|
|
36
36
|
this.workers = new Map();
|
|
37
|
-
this.queues =
|
|
37
|
+
this.queues = {};
|
|
38
38
|
this.pendingOffWorkCleanups = new Set();
|
|
39
39
|
this.#spies = new Map();
|
|
40
40
|
this.#localGroupActive = new Map();
|
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,QAAA,MAAM,cAAc,WAAW,CAAA;AAC/B,QAAA,MAAM,oBAAoB,qBAAqB,CAAA;AAC/C,QAAA,MAAM,mBAAmB,mBAAmB,CAAA;AAM5C,QAAA,MAAM,UAAU;;;;;;;EAOd,CAAA;AAEF,QAAA,MAAM,cAAc;;;;;;;EAOlB,CAAA;AAeF,iBAAS,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,UA8BrF;AA4GD,iBAAS,kBAAkB,CAAE,MAAM,EAAE,MAAM,UAU1C;AAED,iBAAS,kBAAkB,CAAE,MAAM,EAAE,MAAM,UAE1C;AA6RD,iBAAS,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,UAGnE;AAED,iBAAS,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAGjD;AAkDD,iBAAS,sBAAsB,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAE5F;AAED,iBAAS,uBAAuB,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAE7F;AAED,iBAAS,cAAc,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAEvD;AAED,iBAAS,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAEtD;AAwBD,iBAAS,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAE,kBAAuB,UA0B5E;AAED,iBAAS,SAAS,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,CA+B9D;AAED,iBAAS,cAAc,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAUrD;AAED,iBAAS,gBAAgB,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEvD;AAED,iBAAS,gBAAgB,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEvD;AAED,iBAAS,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEpD;AAED,iBAAS,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEpD;AAED,iBAAS,YAAY,CAAE,MAAM,EAAE,MAAM,UAEpC;AAED,iBAAS,mBAAmB,CAAE,MAAM,EAAE,MAAM,UAE3C;AAED,iBAAS,QAAQ,CAAE,MAAM,EAAE,MAAM,UAWhC;AAED,iBAAS,UAAU,CAAE,MAAM,EAAE,MAAM,UAMlC;AAED,iBAAS,SAAS,CAAE,MAAM,EAAE,MAAM,UASjC;AAED,iBAAS,WAAW,CAAE,MAAM,EAAE,MAAM,UAKnC;AAED,iBAAS,iBAAiB,CAAE,MAAM,EAAE,MAAM,UAKzC;AAED,iBAAS,OAAO,WAEf;AAED,iBAAS,aAAa,CAAE,MAAM,EAAE,MAAM,UAKrC;AAED,iBAAS,WAAW,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAa5C;AAED,iBAAS,gBAAgB,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,iBAAS,iBAAiB,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,iBAAS,UAAU,CAAE,MAAM,EAAE,MAAM,UAElC;AAED,iBAAS,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAEnD;AAED,iBAAS,kBAAkB,CAAE,MAAM,EAAE,MAAM,UAE1C;AAED,iBAAS,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAEtD;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAA;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAwED,iBAAS,YAAY,CAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.js
CHANGED
|
@@ -581,7 +581,7 @@ function deleteJobsById(schema, table) {
|
|
|
581
581
|
WITH results as (
|
|
582
582
|
DELETE FROM ${schema}.${table}
|
|
583
583
|
WHERE name = $1
|
|
584
|
-
AND id IN (SELECT UNNEST($2::uuid[]))
|
|
584
|
+
AND id IN (SELECT UNNEST($2::uuid[]))
|
|
585
585
|
RETURNING 1
|
|
586
586
|
)
|
|
587
587
|
SELECT COUNT(*) from results
|
|
@@ -758,36 +758,52 @@ function fetchNextJob(options) {
|
|
|
758
758
|
groupConcurrency.tiers &&
|
|
759
759
|
Object.keys(groupConcurrency.tiers).length > 0;
|
|
760
760
|
const params = buildFetchParams(options);
|
|
761
|
-
const whereConditions = [
|
|
762
|
-
`name = '${name}'`,
|
|
763
|
-
`state < '${JOB_STATES.active}'`,
|
|
764
|
-
!ignoreStartAfter ? 'start_after < now()' : '',
|
|
765
|
-
hasIgnoreSingletons ? `singleton_key <> ALL(${params.ignoreSingletonsParam})` : '',
|
|
766
|
-
hasIgnoreGroups ? `(group_id IS NULL OR group_id <> ALL(${params.ignoreGroupsParam}))` : '',
|
|
767
|
-
hasMinPriority ? `priority >= ${params.minPriorityParam}` : '',
|
|
768
|
-
hasMaxPriority ? `priority <= ${params.maxPriorityParam}` : ''
|
|
769
|
-
].filter(Boolean).join(' AND ');
|
|
770
761
|
const selectCols = [
|
|
771
|
-
'id',
|
|
772
|
-
singletonFetch ? 'singleton_key' : '',
|
|
773
|
-
hasGroupConcurrency ? 'group_id, group_tier' : ''
|
|
762
|
+
'j.id',
|
|
763
|
+
singletonFetch ? 'j.singleton_key' : '',
|
|
764
|
+
hasGroupConcurrency ? 'j.group_id, j.group_tier' : ''
|
|
774
765
|
].filter(Boolean).join(', ');
|
|
766
|
+
// MATERIALIZED forces Postgres to compute this aggregation once and cache the
|
|
767
|
+
// result. Without it, Postgres 12+ may inline the CTE and re-evaluate the
|
|
768
|
+
// COUNT query at each reference site. active_group_counts is referenced twice:
|
|
769
|
+
// once in the next CTE join (to pre-filter saturated groups before LIMIT) and
|
|
770
|
+
// once in group_ranking (to enforce the per-batch concurrency limit).
|
|
775
771
|
const activeGroupCountsCte = hasGroupConcurrency
|
|
776
|
-
? `active_group_counts AS (
|
|
772
|
+
? `active_group_counts AS MATERIALIZED (
|
|
777
773
|
SELECT group_id, COUNT(*)::int as active_cnt
|
|
778
774
|
FROM ${schema}.${table}
|
|
779
775
|
WHERE name = '${name}' AND state = '${JOB_STATES.active}' AND group_id IS NOT NULL
|
|
780
776
|
GROUP BY group_id
|
|
781
777
|
), `
|
|
782
778
|
: '';
|
|
779
|
+
// Column references are qualified with j. throughout so both the base case and
|
|
780
|
+
// the groupConcurrency branch (which joins active_group_counts) share one set of
|
|
781
|
+
// expressions. The join introduces agc.group_id which would otherwise be ambiguous.
|
|
782
|
+
const whereConditions = [
|
|
783
|
+
`j.name = '${name}'`,
|
|
784
|
+
`j.state < '${JOB_STATES.active}'`,
|
|
785
|
+
!ignoreStartAfter ? 'j.start_after < now()' : '',
|
|
786
|
+
hasIgnoreSingletons ? `j.singleton_key <> ALL(${params.ignoreSingletonsParam})` : '',
|
|
787
|
+
hasIgnoreGroups ? `(j.group_id IS NULL OR j.group_id <> ALL(${params.ignoreGroupsParam}))` : '',
|
|
788
|
+
hasMinPriority ? `j.priority >= ${params.minPriorityParam}` : '',
|
|
789
|
+
hasMaxPriority ? `j.priority <= ${params.maxPriorityParam}` : '',
|
|
790
|
+
hasGroupConcurrency
|
|
791
|
+
? `(j.group_id IS NULL
|
|
792
|
+
OR agc.active_cnt IS NULL
|
|
793
|
+
OR agc.active_cnt < ${hasTiers
|
|
794
|
+
? `COALESCE((${params.tiersParam} ->> j.group_tier)::int, ${params.defaultGroupLimitParam})`
|
|
795
|
+
: params.defaultGroupLimitParam})`
|
|
796
|
+
: ''
|
|
797
|
+
].filter(Boolean).join('\n AND ');
|
|
783
798
|
const nextCte = `
|
|
784
799
|
next AS (
|
|
785
800
|
SELECT ${selectCols}
|
|
786
|
-
FROM ${schema}.${table}
|
|
801
|
+
FROM ${schema}.${table} j
|
|
802
|
+
${hasGroupConcurrency ? 'LEFT JOIN active_group_counts agc ON j.group_id = agc.group_id' : ''}
|
|
787
803
|
WHERE ${whereConditions}
|
|
788
|
-
ORDER BY ${priority ? 'priority desc, ' : ''}${orderByCreatedOn ? 'created_on, ' : ''}id
|
|
804
|
+
ORDER BY ${priority ? 'j.priority desc, ' : ''}${orderByCreatedOn ? 'j.created_on, ' : ''}j.id
|
|
789
805
|
LIMIT ${limit}
|
|
790
|
-
FOR UPDATE SKIP LOCKED
|
|
806
|
+
FOR UPDATE OF j SKIP LOCKED
|
|
791
807
|
)`;
|
|
792
808
|
const singletonCte = singletonFetch
|
|
793
809
|
? `, singleton_ranking AS (
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-boss",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.16.0",
|
|
4
4
|
"description": "Queueing jobs in Postgres from Node.js like a boss",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@tsconfig/node-ts": "^23.6.4",
|
|
21
21
|
"@tsconfig/node22": "^22.0.5",
|
|
22
22
|
"@types/luxon": "^3.7.1",
|
|
23
|
-
"@types/node": "^22.19.
|
|
23
|
+
"@types/node": "^22.19.17",
|
|
24
24
|
"@types/pg": "^8.20.0",
|
|
25
25
|
"@vitest/coverage-v8": "^4.1.2",
|
|
26
26
|
"cli-testlab": "^6.0.1",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"luxon": "^3.7.2",
|
|
29
29
|
"neostandard": "^0.13.0",
|
|
30
30
|
"tsx": "^4.21.0",
|
|
31
|
-
"typescript": "^6.0.
|
|
31
|
+
"typescript": "^6.0.3",
|
|
32
32
|
"vitest": "^4.0.18"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|