prostgles-server 4.2.662 → 4.2.663
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/Jobs/JobManager.js +2 -2
- package/dist/Jobs/JobManager.js.map +1 -1
- package/dist/Jobs/JobTypes.d.ts +4 -6
- package/dist/Jobs/JobTypes.d.ts.map +1 -1
- package/dist/Jobs/JobTypes.js.map +1 -1
- package/dist/Jobs/claimJob.d.ts +7 -6
- package/dist/Jobs/claimJob.d.ts.map +1 -1
- package/dist/Jobs/claimJob.js +9 -7
- package/dist/Jobs/claimJob.js.map +1 -1
- package/dist/Jobs/enqueueJob.d.ts +2 -2
- package/dist/Jobs/enqueueJob.d.ts.map +1 -1
- package/dist/Jobs/enqueueJob.js +22 -22
- package/dist/Jobs/enqueueJob.js.map +1 -1
- package/dist/Jobs/getJobTableHooks.js +5 -5
- package/dist/Jobs/getJobTableHooks.js.map +1 -1
- package/dist/Jobs/jobTableConfig.d.ts +22 -8
- package/dist/Jobs/jobTableConfig.d.ts.map +1 -1
- package/dist/Jobs/jobTableConfig.js +9 -4
- package/dist/Jobs/jobTableConfig.js.map +1 -1
- package/dist/Jobs/jobUtils.d.ts +1 -1
- package/dist/Jobs/jobUtils.d.ts.map +1 -1
- package/dist/Jobs/jobUtils.js +2 -1
- package/dist/Jobs/jobUtils.js.map +1 -1
- package/dist/Jobs/runJob.d.ts.map +1 -1
- package/dist/Jobs/runJob.js +21 -15
- package/dist/Jobs/runJob.js.map +1 -1
- package/package.json +1 -1
package/dist/Jobs/JobManager.js
CHANGED
|
@@ -46,7 +46,7 @@ class JobManager {
|
|
|
46
46
|
await this.prostgles.db.none(`UPDATE ${this.tableSQL} SET cancel_requested = TRUE,
|
|
47
47
|
status = CASE WHEN status = 'pending' THEN 'cancelled' ELSE status END,
|
|
48
48
|
finished_at = CASE WHEN status = 'pending' THEN clock_timestamp() ELSE finished_at END
|
|
49
|
-
WHERE id =
|
|
49
|
+
WHERE id = \${jobId} AND status IN ('pending', 'running')`, { jobId: id });
|
|
50
50
|
},
|
|
51
51
|
rerun: async (id, params = {}, options) => {
|
|
52
52
|
const clientReq = this.getClientRequest(options?.userId);
|
|
@@ -57,7 +57,7 @@ class JobManager {
|
|
|
57
57
|
const job = await (0, getJobTableHandler_1.getJobTableHandler)(this.prostgles, transaction).findOne({ id });
|
|
58
58
|
if (!job)
|
|
59
59
|
throw new Error("Job not found");
|
|
60
|
-
const { jobId } = await (0, enqueueJob_1.enqueueJob)(this.prostgles, transaction, job.job_name, job.
|
|
60
|
+
const { jobId } = await (0, enqueueJob_1.enqueueJob)(this.prostgles, transaction, job.job_name, job.target_row_pkey, {
|
|
61
61
|
params: { ...job.params, ...params },
|
|
62
62
|
reason: "rerun",
|
|
63
63
|
userId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobManager.js","sourceRoot":"","sources":["../../lib/Jobs/JobManager.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAC1C,qCAAkC;AAClC,yCAAsC;AACtC,6DAA0D;AAC1D,yCAAsC;AACtC,yDAAsD;AACtD,uEAA0E;AAC1E,yDAA4D;AAE5D,MAAa,UAAU;IACQ;IAA7B,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IACrD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC;IACjE,CAAC;IACD,IAAI,QAAQ;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC;QAC5F,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IACO,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,CAAiC;IACtC,OAAO,CAAiB;IACf,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IACpD,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,GAAG,GAAS;QACnB,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAA,uCAAkB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAE3D,SAAS,EAAE,SAAS,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,EAAE,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,IAAA,uCAAkB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,EAAG,CAAC,IAAI,CAC3B,UAAU,IAAI,CAAC,QAAQ;;;
|
|
1
|
+
{"version":3,"file":"JobManager.js","sourceRoot":"","sources":["../../lib/Jobs/JobManager.ts"],"names":[],"mappings":"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"}
|
package/dist/Jobs/JobTypes.d.ts
CHANGED
|
@@ -55,7 +55,8 @@ export type JobContext<S, T extends JobTableName<S> | undefined, P extends Param
|
|
|
55
55
|
};
|
|
56
56
|
/** Cancellation and timeouts are cooperative: handlers must observe this signal. */
|
|
57
57
|
signal: AbortSignal;
|
|
58
|
-
progress: (done: number, total
|
|
58
|
+
progress: (done: number, total: number) => Promise<void>;
|
|
59
|
+
progressMessage: (message: string | null) => Promise<void>;
|
|
59
60
|
checkpoint: {
|
|
60
61
|
get<C>(): Promise<C | undefined>;
|
|
61
62
|
set<C>(value: C): Promise<void>;
|
|
@@ -101,13 +102,10 @@ export type JobValue = null | string | number | boolean | readonly JobValue[] |
|
|
|
101
102
|
readonly [key: string]: JobValue;
|
|
102
103
|
};
|
|
103
104
|
type JobValues = {
|
|
104
|
-
|
|
105
|
+
target_row_pkey: Record<string, JobValue>;
|
|
105
106
|
params: Record<string, JobValue>;
|
|
106
107
|
checkpoint: JobValue | null;
|
|
107
|
-
|
|
108
|
-
done: number;
|
|
109
|
-
total?: number;
|
|
110
|
-
} | null;
|
|
108
|
+
error: JobValue;
|
|
111
109
|
};
|
|
112
110
|
export type JobRecord = TableRowFromTableConfig<typeof jobTableConfig, JobValues>;
|
|
113
111
|
export type JobInsertRecord = TableInsertRowFromTableConfig<typeof jobTableConfig, JobValues>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobTypes.d.ts","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"JobTypes.d.ts","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobTypes.js","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JobTypes.js","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":";;;AA2FA,oFAAoF;AAC7E,MAAM,gBAAgB,GAAG,GAAkC,EAAE,CAClE,CAAC,CAAC,UAAmB,EAAE,EAAE,CAAC,UAAU,CAA0B,CAAC;AADpD,QAAA,gBAAgB,oBACoC"}
|
package/dist/Jobs/claimJob.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const claimJob: (prostgles: Prostgles, name: string, concurrency:
|
|
|
3
3
|
readonly id: string;
|
|
4
4
|
readonly job_name: string;
|
|
5
5
|
readonly target_table: string | null;
|
|
6
|
-
readonly
|
|
6
|
+
readonly target_row_pkey: Record<string, import("./JobTypes").JobValue>;
|
|
7
7
|
readonly params: Record<string, import("./JobTypes").JobValue>;
|
|
8
8
|
readonly user_id: string | null;
|
|
9
9
|
readonly occurrence: string | null;
|
|
@@ -16,11 +16,12 @@ export declare const claimJob: (prostgles: Prostgles, name: string, concurrency:
|
|
|
16
16
|
readonly cancel_requested: boolean;
|
|
17
17
|
readonly checkpoint: import("./JobTypes").JobValue;
|
|
18
18
|
readonly has_checkpoint: boolean;
|
|
19
|
-
readonly
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
readonly progress_message: string | null;
|
|
20
|
+
readonly progress_numeric: import("prostgles-types").JSONB.GetObjectType<{
|
|
21
|
+
readonly done: "number";
|
|
22
|
+
readonly total: "number";
|
|
23
|
+
}> | null;
|
|
24
|
+
readonly error: import("./JobTypes").JobValue;
|
|
24
25
|
readonly run_at: string;
|
|
25
26
|
readonly lease_token: string;
|
|
26
27
|
readonly locked_until: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claimJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,QAAQ,GAAU,WAAW,SAAS,EAAE,MAAM,MAAM,EAAE,aAAa,MAAM
|
|
1
|
+
{"version":3,"file":"claimJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,QAAQ,GAAU,WAAW,SAAS,EAAE,MAAM,MAAM,EAAE,aAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAqCrF,CAAC"}
|
package/dist/Jobs/claimJob.js
CHANGED
|
@@ -7,31 +7,33 @@ const claimJob = async (prostgles, name, concurrency) => {
|
|
|
7
7
|
const tableSQL = prostgles.jobs.tableSQL;
|
|
8
8
|
return prostgles.dboBuilder.getTX(async (dbx, t) => {
|
|
9
9
|
const jobs = (0, getJobTableHandler_1.getJobTableHandler)(prostgles, { dbx, t });
|
|
10
|
-
await t.one("SELECT pg_advisory_xact_lock(hashtextextended($
|
|
10
|
+
await t.one("SELECT pg_advisory_xact_lock(hashtextextended(${advisoryLockKey}, 0))", {
|
|
11
|
+
advisoryLockKey: JSON.stringify([tableSQL, name]),
|
|
12
|
+
});
|
|
11
13
|
await t.none(`UPDATE ${tableSQL} SET
|
|
12
14
|
status = CASE WHEN cancel_requested THEN 'cancelled' WHEN attempts >= max_attempts THEN 'failed' ELSE 'pending' END,
|
|
13
|
-
error = 'Worker interrupted', lease_token = NULL, locked_until = NULL,
|
|
15
|
+
error = jsonb_build_object('message', 'Worker interrupted'), lease_token = NULL, locked_until = NULL,
|
|
14
16
|
finished_at = CASE WHEN cancel_requested OR attempts >= max_attempts THEN clock_timestamp() ELSE NULL END
|
|
15
|
-
WHERE job_name =
|
|
17
|
+
WHERE job_name = \${jobName} AND status = 'running' AND locked_until < clock_timestamp()`, { jobName: name });
|
|
16
18
|
const count = await jobs.count({ job_name: name, status: "running" });
|
|
17
19
|
if (+count >= concurrency)
|
|
18
20
|
return;
|
|
19
21
|
return t.oneOrNone(`
|
|
20
22
|
WITH next_job AS (
|
|
21
23
|
SELECT j.id FROM ${tableSQL} j
|
|
22
|
-
WHERE j.job_name =
|
|
24
|
+
WHERE j.job_name = \${jobName} AND j.status = 'pending' AND j.run_at <= clock_timestamp()
|
|
23
25
|
AND NOT EXISTS (
|
|
24
26
|
SELECT 1 FROM ${tableSQL} earlier WHERE earlier.job_name = j.job_name
|
|
25
|
-
AND earlier.target_table IS NOT DISTINCT FROM j.target_table AND earlier.
|
|
27
|
+
AND earlier.target_table IS NOT DISTINCT FROM j.target_table AND earlier.target_row_pkey = j.target_row_pkey
|
|
26
28
|
AND (earlier.status = 'running' OR (earlier.status = 'pending'
|
|
27
29
|
AND (earlier.created_at, earlier.id) < (j.created_at, j.id)))
|
|
28
30
|
)
|
|
29
31
|
ORDER BY j.created_at, j.id FOR UPDATE SKIP LOCKED LIMIT 1
|
|
30
32
|
)
|
|
31
33
|
UPDATE ${tableSQL} j SET status = 'running', attempts = attempts + 1,
|
|
32
|
-
lease_token =
|
|
34
|
+
lease_token = \${leaseToken}, locked_until = clock_timestamp() + interval '30 seconds'
|
|
33
35
|
FROM next_job WHERE j.id = next_job.id RETURNING j.*
|
|
34
|
-
`,
|
|
36
|
+
`, { jobName: name, leaseToken: (0, node_crypto_1.randomUUID)() });
|
|
35
37
|
});
|
|
36
38
|
};
|
|
37
39
|
exports.claimJob = claimJob;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claimJob.js","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,6DAA0D;AAEnD,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAoB,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"claimJob.js","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,6DAA0D;AAEnD,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAoB,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,GAAG,CAAC,uEAAuE,EAAE;YACnF,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CACV,UAAU,QAAQ;;;;+FAIuE,EACzF,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,IAAI,WAAW;YAAE,OAAO;QAClC,OAAO,CAAC,CAAC,SAAS,CAChB;;2BAEqB,QAAQ;;;4BAGP,QAAQ;;;;;;;eAOrB,QAAQ;;;KAGlB,EACC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAA,wBAAU,GAAE,EAAE,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AArCW,QAAA,QAAQ,YAqCnB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Prostgles } from "../Prostgles";
|
|
2
2
|
import type { JobRecord, JobTransaction } from "./JobTypes";
|
|
3
3
|
/** Called only by configured triggers and reruns, inside their originating transaction. */
|
|
4
|
-
export declare const enqueueJob: (prostgles: Prostgles, transaction: JobTransaction, name: string,
|
|
4
|
+
export declare const enqueueJob: (prostgles: Prostgles, transaction: JobTransaction, name: string, targetRowPkey: JobRecord["target_row_pkey"], options?: {
|
|
5
5
|
userId?: string;
|
|
6
6
|
params?: Record<string, unknown>;
|
|
7
7
|
reason?: "trigger" | "rerun";
|
|
8
8
|
occurrence?: Date;
|
|
9
9
|
}) => Promise<{
|
|
10
10
|
jobId: string;
|
|
11
|
-
|
|
11
|
+
targetRow: import("prostgles-types").AnyObject | undefined;
|
|
12
12
|
}>;
|
|
13
13
|
//# sourceMappingURL=enqueueJob.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueueJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK5D,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GACrB,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,MAAM,MAAM,EACZ,
|
|
1
|
+
{"version":3,"file":"enqueueJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK5D,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GACrB,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,MAAM,MAAM,EACZ,eAAe,SAAS,CAAC,iBAAiB,CAAC,EAC3C,UAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC;CACd;;;EAuFP,CAAC"}
|
package/dist/Jobs/enqueueJob.js
CHANGED
|
@@ -8,7 +8,7 @@ const getJobTableHandler_1 = require("./getJobTableHandler");
|
|
|
8
8
|
const getJobParams_1 = require("./getJobParams");
|
|
9
9
|
const ExecutionContext_1 = require("../ExecutionContext");
|
|
10
10
|
/** Called only by configured triggers and reruns, inside their originating transaction. */
|
|
11
|
-
const enqueueJob = async (prostgles, transaction, name,
|
|
11
|
+
const enqueueJob = async (prostgles, transaction, name, targetRowPkey, options = {}) => {
|
|
12
12
|
const { definition } = (0, getJobDefinition_1.getJobDefinition)(prostgles, name);
|
|
13
13
|
if (definition.runAs === "user" && !options.userId) {
|
|
14
14
|
throw new Error(`User job ${name} requires a user`);
|
|
@@ -19,40 +19,40 @@ const enqueueJob = async (prostgles, transaction, name, owner, options = {}) =>
|
|
|
19
19
|
const tableSQL = prostgles.jobs.tableSQL;
|
|
20
20
|
const jobIdColumn = definition.trigger.type === "row" ? definition.trigger.jobIdColumn : undefined;
|
|
21
21
|
const rowTable = jobIdColumn !== undefined && table !== null ? transaction.dbx[table] : undefined;
|
|
22
|
-
const
|
|
23
|
-
{ id:
|
|
22
|
+
const targetRowFilter = table !== null && prostgles.isMedia(table) ?
|
|
23
|
+
{ id: targetRowPkey.id }
|
|
24
24
|
: {
|
|
25
|
-
$and: Object.entries(
|
|
25
|
+
$and: Object.entries(targetRowPkey).map(([column, value]) => ({ [column]: { $eq: value } })),
|
|
26
26
|
};
|
|
27
27
|
if (rowTable && options.reason === "rerun") {
|
|
28
|
-
// Match row-trigger lock ordering: the
|
|
29
|
-
await rowTable.find(
|
|
28
|
+
// Match row-trigger lock ordering: the target row before the job advisory lock.
|
|
29
|
+
await rowTable.find(targetRowFilter, { select: "", limit: null, forUpdate: true });
|
|
30
30
|
}
|
|
31
31
|
const setJobId = async (jobId) => {
|
|
32
32
|
if (!rowTable || jobIdColumn === undefined)
|
|
33
|
-
return { jobId,
|
|
34
|
-
const
|
|
33
|
+
return { jobId, targetRow: undefined };
|
|
34
|
+
const updateTargetRow = () => rowTable.update(targetRowFilter, { [jobIdColumn]: jobId }, { returning: "*", multi: false });
|
|
35
35
|
// Reruns start outside the generated job hook; give their link update the same ancestry.
|
|
36
|
-
const
|
|
37
|
-
await (0, ExecutionContext_1.runTableHook)(rowTable, [
|
|
38
|
-
: await
|
|
39
|
-
return { jobId,
|
|
36
|
+
const targetRow = options.reason === "rerun" ?
|
|
37
|
+
await (0, ExecutionContext_1.runTableHook)(rowTable, [targetRowPkey], updateTargetRow, { hookKey: `job:${name}` })
|
|
38
|
+
: await updateTargetRow();
|
|
39
|
+
return { jobId, targetRow: targetRow || undefined };
|
|
40
40
|
};
|
|
41
41
|
// Serialize conflicts for this row without serializing writes to unrelated rows.
|
|
42
|
-
await transaction.t.one("SELECT pg_advisory_xact_lock(hashtextextended($
|
|
43
|
-
(0, prostgles_types_1.stableStringify)([tableSQL, name, table,
|
|
44
|
-
|
|
42
|
+
await transaction.t.one("SELECT pg_advisory_xact_lock(hashtextextended(${advisoryLockKey}, 0))", {
|
|
43
|
+
advisoryLockKey: (0, prostgles_types_1.stableStringify)([tableSQL, name, table, targetRowPkey]),
|
|
44
|
+
});
|
|
45
45
|
if (options.occurrence) {
|
|
46
46
|
const existing = await jobs.findOne({
|
|
47
47
|
job_name: name,
|
|
48
48
|
occurrence: options.occurrence.toISOString(),
|
|
49
49
|
});
|
|
50
50
|
if (existing)
|
|
51
|
-
return { jobId: existing.id,
|
|
51
|
+
return { jobId: existing.id, targetRow: undefined };
|
|
52
52
|
}
|
|
53
53
|
const active = await jobs.findOne({
|
|
54
54
|
$and: [
|
|
55
|
-
{ job_name: name, target_table: table,
|
|
55
|
+
{ job_name: name, target_table: table, target_row_pkey: targetRowPkey },
|
|
56
56
|
{ $or: [{ status: "pending" }, { status: "running" }] },
|
|
57
57
|
],
|
|
58
58
|
}, { orderBy: { created_at: 1 } });
|
|
@@ -66,17 +66,17 @@ const enqueueJob = async (prostgles, transaction, name, owner, options = {}) =>
|
|
|
66
66
|
status = CASE WHEN status = 'pending' THEN 'cancelled' ELSE status END,
|
|
67
67
|
finished_at = CASE WHEN status = 'pending' THEN clock_timestamp() ELSE finished_at END
|
|
68
68
|
WHERE
|
|
69
|
-
job_name =
|
|
70
|
-
AND target_table IS NOT DISTINCT FROM
|
|
71
|
-
AND
|
|
72
|
-
AND status IN ('pending', 'running')`,
|
|
69
|
+
job_name = \${jobName}
|
|
70
|
+
AND target_table IS NOT DISTINCT FROM \${targetTable}
|
|
71
|
+
AND target_row_pkey = \${targetRowPkey:json}
|
|
72
|
+
AND status IN ('pending', 'running')`, { jobName: name, targetTable: table, targetRowPkey });
|
|
73
73
|
}
|
|
74
74
|
const jobId = (0, node_crypto_1.randomUUID)();
|
|
75
75
|
await jobs.insert({
|
|
76
76
|
id: jobId,
|
|
77
77
|
job_name: name,
|
|
78
78
|
target_table: table,
|
|
79
|
-
|
|
79
|
+
target_row_pkey: targetRowPkey,
|
|
80
80
|
params,
|
|
81
81
|
user_id: options.userId ?? null,
|
|
82
82
|
occurrence: options.occurrence?.toISOString() ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueueJob.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAAyC;AAEzC,yDAAsD;AAEtD,6DAA0D;AAC1D,iDAA8C;AAC9C,0DAAmD;AAEnD,2FAA2F;AACpF,MAAM,UAAU,GAAG,KAAK,EAC7B,SAAoB,EACpB,WAA2B,EAC3B,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"enqueueJob.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,18 +23,18 @@ const getJobTableHooks = (prostgles, tableHooks) => {
|
|
|
23
23
|
const primaryKeyNames = table.columns
|
|
24
24
|
.filter((column) => column.is_pkey)
|
|
25
25
|
.map((column) => column.name);
|
|
26
|
-
const
|
|
27
|
-
if (trigger.when && !(await table.findOne({ $and: [
|
|
26
|
+
const targetRowPkey = (0, prostgles_types_1.pickKeys)(row, primaryKeyNames);
|
|
27
|
+
if (trigger.when && !(await table.findOne({ $and: [targetRowPkey, trigger.when] })))
|
|
28
28
|
return;
|
|
29
|
-
const {
|
|
29
|
+
const { targetRow } = await (0, enqueueJob_1.enqueueJob)(prostgles, { t: transaction.t, dbx }, name, targetRowPkey, {
|
|
30
30
|
userId: prostgles.getExecution()?.user?.id,
|
|
31
31
|
}).catch((error) => {
|
|
32
32
|
// A caught enqueue error must not commit the originating row without its job.
|
|
33
33
|
table.dboBuilder.failTransaction(transaction.t, error);
|
|
34
34
|
throw error;
|
|
35
35
|
});
|
|
36
|
-
if (
|
|
37
|
-
Object.assign(row,
|
|
36
|
+
if (targetRow)
|
|
37
|
+
Object.assign(row, targetRow);
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
const hooks = mergedHooks[trigger.table];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJobTableHooks.js","sourceRoot":"","sources":["../../lib/Jobs/getJobTableHooks.ts"],"names":[],"mappings":";;;AAAA,qDAA2D;AAK3D,6CAA0C;AAGnC,MAAM,gBAAgB,GAAG,CAC9B,SAAoB,EACpB,UAA6C,EAC7C,EAAE;IACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC;IAC5C,MAAM,WAAW,GAA0B,EAAE,GAAG,UAAU,EAAE,CAAC;IAC7D,mFAAmF;IACnF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACtE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CACnE,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAU,CAAC,CAAC,CAAC;YAChF,aAAa,EAAE,OAAO,CAAC,OAAO;YAC9B,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE;gBAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC;gBAClC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAC;gBACvD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO;qBAClC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;qBAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"getJobTableHooks.js","sourceRoot":"","sources":["../../lib/Jobs/getJobTableHooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export declare const jobTableConfig: {
|
|
|
3
3
|
readonly id: "UUID PRIMARY KEY";
|
|
4
4
|
readonly job_name: "TEXT NOT NULL";
|
|
5
5
|
readonly target_table: "TEXT";
|
|
6
|
-
readonly
|
|
6
|
+
readonly target_row_pkey: "JSONB NOT NULL";
|
|
7
7
|
readonly params: "JSONB NOT NULL";
|
|
8
8
|
readonly user_id: "TEXT";
|
|
9
9
|
readonly occurrence: "TIMESTAMPTZ";
|
|
@@ -16,8 +16,17 @@ export declare const jobTableConfig: {
|
|
|
16
16
|
readonly cancel_requested: "BOOLEAN NOT NULL DEFAULT FALSE";
|
|
17
17
|
readonly checkpoint: "JSONB";
|
|
18
18
|
readonly has_checkpoint: "BOOLEAN NOT NULL DEFAULT FALSE";
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
19
|
+
readonly progress_message: "TEXT";
|
|
20
|
+
readonly progress_numeric: {
|
|
21
|
+
readonly nullable: true;
|
|
22
|
+
readonly jsonbSchema: {
|
|
23
|
+
readonly type: {
|
|
24
|
+
readonly done: "number";
|
|
25
|
+
readonly total: "number";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
readonly error: "JSONB";
|
|
21
30
|
readonly run_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()";
|
|
22
31
|
readonly lease_token: "UUID";
|
|
23
32
|
readonly locked_until: "TIMESTAMPTZ";
|
|
@@ -32,7 +41,8 @@ export declare const jobTableConfig: {
|
|
|
32
41
|
readonly user_id: {};
|
|
33
42
|
readonly occurrence: {};
|
|
34
43
|
readonly checkpoint: {};
|
|
35
|
-
readonly
|
|
44
|
+
readonly progress_message: {};
|
|
45
|
+
readonly progress_numeric: {};
|
|
36
46
|
readonly backoff: {
|
|
37
47
|
readonly enum: readonly ["fixed", "exponential"];
|
|
38
48
|
};
|
|
@@ -52,7 +62,8 @@ export declare const jobTableConfig: {
|
|
|
52
62
|
readonly user_id: {};
|
|
53
63
|
readonly occurrence: {};
|
|
54
64
|
readonly checkpoint: {};
|
|
55
|
-
readonly
|
|
65
|
+
readonly progress_message: {};
|
|
66
|
+
readonly progress_numeric: {};
|
|
56
67
|
readonly backoff: {
|
|
57
68
|
readonly enum: readonly ["fixed", "exponential"];
|
|
58
69
|
};
|
|
@@ -68,7 +79,8 @@ export declare const jobTableConfig: {
|
|
|
68
79
|
readonly user_id: {};
|
|
69
80
|
readonly occurrence: {};
|
|
70
81
|
readonly checkpoint: {};
|
|
71
|
-
readonly
|
|
82
|
+
readonly progress_message: {};
|
|
83
|
+
readonly progress_numeric: {};
|
|
72
84
|
readonly backoff: {
|
|
73
85
|
readonly enum: readonly ["fixed", "exponential"];
|
|
74
86
|
};
|
|
@@ -87,7 +99,8 @@ export declare const jobTableConfig: {
|
|
|
87
99
|
readonly user_id: {};
|
|
88
100
|
readonly occurrence: {};
|
|
89
101
|
readonly checkpoint: {};
|
|
90
|
-
readonly
|
|
102
|
+
readonly progress_message: {};
|
|
103
|
+
readonly progress_numeric: {};
|
|
91
104
|
readonly backoff: {
|
|
92
105
|
readonly enum: readonly ["fixed", "exponential"];
|
|
93
106
|
};
|
|
@@ -104,7 +117,8 @@ export declare const jobTableConfig: {
|
|
|
104
117
|
readonly user_id: {};
|
|
105
118
|
readonly occurrence: {};
|
|
106
119
|
readonly checkpoint: {};
|
|
107
|
-
readonly
|
|
120
|
+
readonly progress_message: {};
|
|
121
|
+
readonly progress_numeric: {};
|
|
108
122
|
readonly backoff: {
|
|
109
123
|
readonly enum: readonly ["fixed", "exponential"];
|
|
110
124
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jobTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDS,CAAC"}
|
|
@@ -6,7 +6,8 @@ const shared = {
|
|
|
6
6
|
user_id: {},
|
|
7
7
|
occurrence: {},
|
|
8
8
|
checkpoint: {},
|
|
9
|
-
|
|
9
|
+
progress_message: {},
|
|
10
|
+
progress_numeric: {},
|
|
10
11
|
backoff: { enum: ["fixed", "exponential"] },
|
|
11
12
|
reason: { enum: ["trigger", "rerun"] },
|
|
12
13
|
};
|
|
@@ -15,7 +16,7 @@ exports.jobTableConfig = {
|
|
|
15
16
|
id: "UUID PRIMARY KEY",
|
|
16
17
|
job_name: "TEXT NOT NULL",
|
|
17
18
|
target_table: "TEXT",
|
|
18
|
-
|
|
19
|
+
target_row_pkey: "JSONB NOT NULL",
|
|
19
20
|
params: "JSONB NOT NULL",
|
|
20
21
|
user_id: "TEXT",
|
|
21
22
|
occurrence: "TIMESTAMPTZ",
|
|
@@ -28,8 +29,12 @@ exports.jobTableConfig = {
|
|
|
28
29
|
cancel_requested: "BOOLEAN NOT NULL DEFAULT FALSE",
|
|
29
30
|
checkpoint: "JSONB",
|
|
30
31
|
has_checkpoint: "BOOLEAN NOT NULL DEFAULT FALSE",
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
progress_message: "TEXT",
|
|
33
|
+
progress_numeric: {
|
|
34
|
+
nullable: true,
|
|
35
|
+
jsonbSchema: { type: { done: "number", total: "number" } },
|
|
36
|
+
},
|
|
37
|
+
error: "JSONB",
|
|
33
38
|
run_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()",
|
|
34
39
|
lease_token: "UUID",
|
|
35
40
|
locked_until: "TIMESTAMPTZ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobTableConfig.js","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG;IACb,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,
|
|
1
|
+
{"version":3,"file":"jobTableConfig.js","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG;IACb,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;CAC9B,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE;QACP,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,eAAe;QACzB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,gBAAgB;QACjC,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,iCAAiC;QACzC,MAAM,EAAE,iCAAiC;QACzC,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,kBAAkB;QAChC,QAAQ,EAAE,2BAA2B;QACrC,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,gCAAgC;QAClD,UAAU,EAAE,OAAO;QACnB,cAAc,EAAE,gCAAgC;QAChD,gBAAgB,EAAE,MAAM;QACxB,gBAAgB,EAAE;YAChB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;SAC3D;QACD,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,gDAAgD;QACxD,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,gDAAgD;QAC5D,WAAW,EAAE,aAAa;KAC3B;IACD,KAAK,EAAE;QACL,GAAG,EAAE;YACH,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3C;gBACE,GAAG,MAAM;gBACT,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;gBAC1B,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;aAC5B;YACD,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC9D,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjF,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;SAC1E;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,wBAAwB,EAAE;QAC9F,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE;QACrE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kCAAkC,EAAE;KAC3E;CACiC,CAAC"}
|
package/dist/Jobs/jobUtils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JobValue } from "./JobTypes";
|
|
2
2
|
export declare const assertJobValue: (value: unknown, ancestors?: Set<object>) => asserts value is JobValue;
|
|
3
|
-
export declare const jobError: (error: unknown) => string;
|
|
3
|
+
export declare const jobError: (error: unknown) => string | any[] | import("prostgles-types").AnyObject;
|
|
4
4
|
export declare class PermanentJobError extends Error {
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=jobUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobUtils.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jobUtils.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,CAC3B,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KACpB,OAAO,CAAC,KAAK,IAAI,QAcrB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,yDACO,CAAC;AAE/C,qBAAa,iBAAkB,SAAQ,KAAK;CAAG"}
|
package/dist/Jobs/jobUtils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PermanentJobError = exports.jobError = exports.assertJobValue = void 0;
|
|
4
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
4
5
|
const assertJobValue = (value, ancestors = new Set()) => {
|
|
5
6
|
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
6
7
|
return;
|
|
@@ -17,7 +18,7 @@ const assertJobValue = (value, ancestors = new Set()) => {
|
|
|
17
18
|
ancestors.delete(value);
|
|
18
19
|
};
|
|
19
20
|
exports.assertJobValue = assertJobValue;
|
|
20
|
-
const jobError = (error) =>
|
|
21
|
+
const jobError = (error) => (0, prostgles_types_1.getSerialisableError)(error) ?? String(error);
|
|
21
22
|
exports.jobError = jobError;
|
|
22
23
|
class PermanentJobError extends Error {
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobUtils.js","sourceRoot":"","sources":["../../lib/Jobs/jobUtils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"jobUtils.js","sourceRoot":"","sources":["../../lib/Jobs/jobUtils.ts"],"names":[],"mappings":";;;AAAA,qDAAuD;AAGhD,MAAM,cAAc,GAGM,CAAC,KAAK,EAAE,YAAY,IAAI,GAAG,EAAU,EAAE,EAAE;IACxE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IAChE,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,EAC5E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACrE,IAAA,sBAAc,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE,CACzC,IAAA,sCAAoB,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AADlC,QAAA,QAAQ,YAC0B;AAE/C,MAAa,iBAAkB,SAAQ,KAAK;CAAG;AAA/C,8CAA+C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/runJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAAc,SAAS,EAAgB,MAAM,YAAY,CAAC;AAGtE,eAAO,MAAM,MAAM,GACjB,WAAW,SAAS,EACpB,KAAK,OAAO,CAAC,SAAS,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,EAC9C,YAAY,eAAe,EAC3B,UAAU,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"runJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/runJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAAc,SAAS,EAAgB,MAAM,YAAY,CAAC;AAGtE,eAAO,MAAM,MAAM,GACjB,WAAW,SAAS,EACpB,KAAK,OAAO,CAAC,SAAS,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,EAC9C,YAAY,eAAe,EAC3B,UAAU,MAAM,OAAO,kBAkJxB,CAAC"}
|
package/dist/Jobs/runJob.js
CHANGED
|
@@ -8,11 +8,11 @@ const jobUtils_1 = require("./jobUtils");
|
|
|
8
8
|
const runJob = async (prostgles, job, controller, stopping) => {
|
|
9
9
|
const db = prostgles.db;
|
|
10
10
|
const tableSQL = prostgles.jobs.tableSQL;
|
|
11
|
-
const claim =
|
|
12
|
-
const owned = "id = $
|
|
13
|
-
const write = async (set,
|
|
11
|
+
const claim = { jobId: job.id, leaseToken: job.lease_token };
|
|
12
|
+
const owned = "id = ${jobId} AND lease_token = ${leaseToken} AND status = 'running' AND locked_until > clock_timestamp()";
|
|
13
|
+
const write = async (set, values) => {
|
|
14
14
|
controller.signal.throwIfAborted();
|
|
15
|
-
const result = await db.oneOrNone(`UPDATE ${tableSQL} SET ${set} WHERE ${owned} AND NOT cancel_requested RETURNING id`,
|
|
15
|
+
const result = await db.oneOrNone(`UPDATE ${tableSQL} SET ${set} WHERE ${owned} AND NOT cancel_requested RETURNING id`, { ...claim, ...values });
|
|
16
16
|
if (!result) {
|
|
17
17
|
controller.abort(new Error("Job cancelled or lease lost"));
|
|
18
18
|
controller.signal.throwIfAborted();
|
|
@@ -50,7 +50,7 @@ const runJob = async (prostgles, job, controller, stopping) => {
|
|
|
50
50
|
}
|
|
51
51
|
const context = await (0, getJobContext_1.getJobContext)(prostgles, definition, job.user_id ?? undefined);
|
|
52
52
|
const row = definition.trigger.type === "row" ?
|
|
53
|
-
await context.dbo[definition.trigger.table]?.findOne?.(job.
|
|
53
|
+
await context.dbo[definition.trigger.table]?.findOne?.(job.target_row_pkey)
|
|
54
54
|
: undefined;
|
|
55
55
|
if (definition.trigger.type === "row" && !row)
|
|
56
56
|
throw new jobUtils_1.PermanentJobError("Job row is missing or not permitted");
|
|
@@ -63,11 +63,16 @@ const runJob = async (prostgles, job, controller, stopping) => {
|
|
|
63
63
|
progress: async (done, total) => {
|
|
64
64
|
if (!Number.isFinite(done) ||
|
|
65
65
|
done < 0 ||
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
!Number.isFinite(total) ||
|
|
67
|
+
total < 0 ||
|
|
68
|
+
done > total) {
|
|
69
|
+
throw new Error("Invalid job progress. Expecting 0 <= done <= total and total must be finite.");
|
|
68
70
|
}
|
|
69
|
-
await write("
|
|
71
|
+
await write("progress_numeric = ${progress:json}", {
|
|
72
|
+
progress: { done, total },
|
|
73
|
+
});
|
|
70
74
|
},
|
|
75
|
+
progressMessage: (message) => write("progress_message = ${message}", { message }),
|
|
71
76
|
checkpoint: {
|
|
72
77
|
get: async () => {
|
|
73
78
|
controller.signal.throwIfAborted();
|
|
@@ -78,7 +83,7 @@ const runJob = async (prostgles, job, controller, stopping) => {
|
|
|
78
83
|
},
|
|
79
84
|
set: async (checkpoint) => {
|
|
80
85
|
(0, jobUtils_1.assertJobValue)(checkpoint);
|
|
81
|
-
await write("checkpoint = $
|
|
86
|
+
await write("checkpoint = ${checkpoint:json}, has_checkpoint = TRUE", { checkpoint });
|
|
82
87
|
},
|
|
83
88
|
},
|
|
84
89
|
fail: (reason) => {
|
|
@@ -109,16 +114,17 @@ const runJob = async (prostgles, job, controller, stopping) => {
|
|
|
109
114
|
return;
|
|
110
115
|
}
|
|
111
116
|
const retry = failure && !(failure.error instanceof jobUtils_1.PermanentJobError) && job.attempts < job.max_attempts;
|
|
112
|
-
const
|
|
117
|
+
const delayMs = Math.min(2_147_483_647, job.delay_ms * (job.backoff === "exponential" ? 2 ** (job.attempts - 1) : 1));
|
|
113
118
|
const status = !failure ? "succeeded"
|
|
114
119
|
: retry ? "pending"
|
|
115
120
|
: "failed";
|
|
116
|
-
await db.none(`UPDATE ${tableSQL}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
await db.none(`UPDATE ${tableSQL}
|
|
122
|
+
SET status = CASE WHEN cancel_requested THEN 'cancelled' ELSE \${status} END,
|
|
123
|
+
error = \${error:json}, lease_token = NULL, locked_until = NULL,
|
|
124
|
+
run_at = clock_timestamp() + \${delayMs} * interval '1 millisecond',
|
|
125
|
+
finished_at = CASE WHEN cancel_requested OR \${status} <> 'pending' THEN clock_timestamp() ELSE NULL END
|
|
120
126
|
WHERE ${owned}
|
|
121
|
-
`,
|
|
127
|
+
`, { ...claim, status, error: failure ? (0, jobUtils_1.jobError)(failure.error) : null, delayMs });
|
|
122
128
|
};
|
|
123
129
|
exports.runJob = runJob;
|
|
124
130
|
//# sourceMappingURL=runJob.js.map
|
package/dist/Jobs/runJob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runJob.js","sourceRoot":"","sources":["../../lib/Jobs/runJob.ts"],"names":[],"mappings":";;;AACA,0DAA6D;AAC7D,yDAAsD;AACtD,mDAAgD;AAEhD,yCAAyE;AAElE,MAAM,MAAM,GAAG,KAAK,EACzB,SAAoB,EACpB,GAA8C,EAC9C,UAA2B,EAC3B,QAAuB,EACvB,EAAE;IACF,MAAM,EAAE,GAAG,SAAS,CAAC,EAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"runJob.js","sourceRoot":"","sources":["../../lib/Jobs/runJob.ts"],"names":[],"mappings":"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"}
|