pg-boss 10.1.1 → 10.1.3
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/package.json +7 -7
- package/src/plans.js +112 -14
- package/types.d.ts +5 -4
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-boss",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.3",
|
|
4
4
|
"description": "Queueing jobs in Postgres from Node.js like a boss",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"cron-parser": "^4.
|
|
11
|
-
"pg": "^8.
|
|
10
|
+
"cron-parser": "^4.9.0",
|
|
11
|
+
"pg": "^8.12.0",
|
|
12
12
|
"serialize-error": "^8.1.0"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@types/node": "^20.
|
|
16
|
-
"luxon": "^3.0
|
|
17
|
-
"mocha": "^10.
|
|
15
|
+
"@types/node": "^20.16.5",
|
|
16
|
+
"luxon": "^3.5.0",
|
|
17
|
+
"mocha": "^10.7.3",
|
|
18
18
|
"nyc": "^17.0.0",
|
|
19
|
-
"standard": "^17.
|
|
19
|
+
"standard": "^17.1.2"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"test": "standard && mocha",
|
package/src/plans.js
CHANGED
|
@@ -194,7 +194,7 @@ function createTableJob (schema) {
|
|
|
194
194
|
keep_until timestamp with time zone NOT NULL default now() + interval '14 days',
|
|
195
195
|
output jsonb,
|
|
196
196
|
dead_letter text,
|
|
197
|
-
policy text
|
|
197
|
+
policy text
|
|
198
198
|
) PARTITION BY LIST (name)
|
|
199
199
|
`
|
|
200
200
|
}
|
|
@@ -555,28 +555,126 @@ function failJobsByTimeout (schema) {
|
|
|
555
555
|
|
|
556
556
|
function failJobs (schema, where, output) {
|
|
557
557
|
return `
|
|
558
|
-
WITH
|
|
559
|
-
|
|
560
|
-
|
|
558
|
+
WITH deleted_jobs AS (
|
|
559
|
+
DELETE FROM ${schema}.job
|
|
560
|
+
WHERE ${where}
|
|
561
|
+
RETURNING *
|
|
562
|
+
),
|
|
563
|
+
retried_jobs AS (
|
|
564
|
+
INSERT INTO ${schema}.job (
|
|
565
|
+
id,
|
|
566
|
+
name,
|
|
567
|
+
priority,
|
|
568
|
+
data,
|
|
569
|
+
state,
|
|
570
|
+
retry_limit,
|
|
571
|
+
retry_count,
|
|
572
|
+
retry_delay,
|
|
573
|
+
retry_backoff,
|
|
574
|
+
start_after,
|
|
575
|
+
started_on,
|
|
576
|
+
singleton_key,
|
|
577
|
+
singleton_on,
|
|
578
|
+
expire_in,
|
|
579
|
+
created_on,
|
|
580
|
+
completed_on,
|
|
581
|
+
keep_until,
|
|
582
|
+
dead_letter,
|
|
583
|
+
policy,
|
|
584
|
+
output
|
|
585
|
+
)
|
|
586
|
+
SELECT
|
|
587
|
+
id,
|
|
588
|
+
name,
|
|
589
|
+
priority,
|
|
590
|
+
data,
|
|
591
|
+
CASE
|
|
561
592
|
WHEN retry_count < retry_limit THEN '${JOB_STATES.retry}'::${schema}.job_state
|
|
562
593
|
ELSE '${JOB_STATES.failed}'::${schema}.job_state
|
|
563
|
-
END,
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
594
|
+
END as state,
|
|
595
|
+
retry_limit,
|
|
596
|
+
retry_count,
|
|
597
|
+
retry_delay,
|
|
598
|
+
retry_backoff,
|
|
599
|
+
CASE
|
|
569
600
|
WHEN retry_count = retry_limit THEN start_after
|
|
570
601
|
WHEN NOT retry_backoff THEN now() + retry_delay * interval '1'
|
|
571
602
|
ELSE now() + (
|
|
572
603
|
retry_delay * 2 ^ LEAST(16, retry_count + 1) / 2 +
|
|
573
604
|
retry_delay * 2 ^ LEAST(16, retry_count + 1) / 2 * random()
|
|
574
605
|
) * interval '1'
|
|
575
|
-
END,
|
|
576
|
-
|
|
577
|
-
|
|
606
|
+
END as start_after,
|
|
607
|
+
started_on,
|
|
608
|
+
singleton_key,
|
|
609
|
+
singleton_on,
|
|
610
|
+
expire_in,
|
|
611
|
+
created_on,
|
|
612
|
+
CASE
|
|
613
|
+
WHEN retry_count < retry_limit THEN NULL
|
|
614
|
+
ELSE now()
|
|
615
|
+
END as completed_on,
|
|
616
|
+
keep_until,
|
|
617
|
+
dead_letter,
|
|
618
|
+
policy,
|
|
619
|
+
${output}
|
|
620
|
+
FROM deleted_jobs
|
|
621
|
+
ON CONFLICT DO NOTHING
|
|
622
|
+
RETURNING *
|
|
623
|
+
),
|
|
624
|
+
failed_jobs as (
|
|
625
|
+
INSERT INTO ${schema}.job (
|
|
626
|
+
id,
|
|
627
|
+
name,
|
|
628
|
+
priority,
|
|
629
|
+
data,
|
|
630
|
+
state,
|
|
631
|
+
retry_limit,
|
|
632
|
+
retry_count,
|
|
633
|
+
retry_delay,
|
|
634
|
+
retry_backoff,
|
|
635
|
+
start_after,
|
|
636
|
+
started_on,
|
|
637
|
+
singleton_key,
|
|
638
|
+
singleton_on,
|
|
639
|
+
expire_in,
|
|
640
|
+
created_on,
|
|
641
|
+
completed_on,
|
|
642
|
+
keep_until,
|
|
643
|
+
dead_letter,
|
|
644
|
+
policy,
|
|
645
|
+
output
|
|
646
|
+
)
|
|
647
|
+
SELECT
|
|
648
|
+
id,
|
|
649
|
+
name,
|
|
650
|
+
priority,
|
|
651
|
+
data,
|
|
652
|
+
'${JOB_STATES.failed}'::${schema}.job_state as state,
|
|
653
|
+
retry_limit,
|
|
654
|
+
retry_count,
|
|
655
|
+
retry_delay,
|
|
656
|
+
retry_backoff,
|
|
657
|
+
start_after,
|
|
658
|
+
started_on,
|
|
659
|
+
singleton_key,
|
|
660
|
+
singleton_on,
|
|
661
|
+
expire_in,
|
|
662
|
+
created_on,
|
|
663
|
+
now() as completed_on,
|
|
664
|
+
keep_until,
|
|
665
|
+
dead_letter,
|
|
666
|
+
policy,
|
|
667
|
+
${output}
|
|
668
|
+
FROM deleted_jobs
|
|
669
|
+
WHERE id NOT IN (SELECT id from retried_jobs)
|
|
578
670
|
RETURNING *
|
|
579
|
-
),
|
|
671
|
+
),
|
|
672
|
+
results as (
|
|
673
|
+
SELECT * FROM retried_jobs
|
|
674
|
+
UNION ALL
|
|
675
|
+
SELECT * FROM failed_jobs
|
|
676
|
+
),
|
|
677
|
+
dlq_jobs as (
|
|
580
678
|
INSERT INTO ${schema}.job (name, data, output, retry_limit, keep_until)
|
|
581
679
|
SELECT
|
|
582
680
|
dead_letter,
|
package/types.d.ts
CHANGED
|
@@ -45,6 +45,9 @@ declare namespace PgBoss {
|
|
|
45
45
|
|
|
46
46
|
clockMonitorIntervalSeconds?: number;
|
|
47
47
|
clockMonitorIntervalMinutes?: number;
|
|
48
|
+
|
|
49
|
+
cronMonitorIntervalSeconds?: number;
|
|
50
|
+
cronWorkerIntervalSeconds?: number;
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
interface MaintenanceOptions {
|
|
@@ -172,12 +175,10 @@ declare namespace PgBoss {
|
|
|
172
175
|
id: string;
|
|
173
176
|
name: string;
|
|
174
177
|
data: T;
|
|
178
|
+
expireInSeconds: number;
|
|
175
179
|
}
|
|
176
180
|
|
|
177
|
-
interface JobWithMetadata<T = object> {
|
|
178
|
-
id: string;
|
|
179
|
-
name: string;
|
|
180
|
-
data: T;
|
|
181
|
+
interface JobWithMetadata<T = object> extends Job<T> {
|
|
181
182
|
priority: number;
|
|
182
183
|
state: 'created' | 'retry' | 'active' | 'completed' | 'cancelled' | 'failed';
|
|
183
184
|
retryLimit: number;
|