mysql-boss 0.1.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/LICENSE +21 -0
- package/README.md +688 -0
- package/dist/cjs/archive.d.ts +8 -0
- package/dist/cjs/archive.d.ts.map +1 -0
- package/dist/cjs/archive.js +82 -0
- package/dist/cjs/archive.js.map +1 -0
- package/dist/cjs/boss.d.ts +45 -0
- package/dist/cjs/boss.d.ts.map +1 -0
- package/dist/cjs/boss.js +205 -0
- package/dist/cjs/boss.js.map +1 -0
- package/dist/cjs/claim.d.ts +5 -0
- package/dist/cjs/claim.d.ts.map +1 -0
- package/dist/cjs/claim.js +47 -0
- package/dist/cjs/claim.js.map +1 -0
- package/dist/cjs/connection.d.ts +4 -0
- package/dist/cjs/connection.d.ts.map +1 -0
- package/dist/cjs/connection.js +26 -0
- package/dist/cjs/connection.js.map +1 -0
- package/dist/cjs/cron/next.d.ts +3 -0
- package/dist/cjs/cron/next.d.ts.map +1 -0
- package/dist/cjs/cron/next.js +179 -0
- package/dist/cjs/cron/next.js.map +1 -0
- package/dist/cjs/cron/parse.d.ts +11 -0
- package/dist/cjs/cron/parse.d.ts.map +1 -0
- package/dist/cjs/cron/parse.js +99 -0
- package/dist/cjs/cron/parse.js.map +1 -0
- package/dist/cjs/dlq.d.ts +11 -0
- package/dist/cjs/dlq.d.ts.map +1 -0
- package/dist/cjs/dlq.js +92 -0
- package/dist/cjs/dlq.js.map +1 -0
- package/dist/cjs/errors.d.ts +10 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +25 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/fail.d.ts +8 -0
- package/dist/cjs/fail.d.ts.map +1 -0
- package/dist/cjs/fail.js +19 -0
- package/dist/cjs/fail.js.map +1 -0
- package/dist/cjs/heartbeat.d.ts +4 -0
- package/dist/cjs/heartbeat.d.ts.map +1 -0
- package/dist/cjs/heartbeat.js +18 -0
- package/dist/cjs/heartbeat.js.map +1 -0
- package/dist/cjs/index.d.ts +70 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/migrate.d.ts +4 -0
- package/dist/cjs/migrate.d.ts.map +1 -0
- package/dist/cjs/migrate.js +14 -0
- package/dist/cjs/migrate.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/retry-util.d.ts +2 -0
- package/dist/cjs/retry-util.d.ts.map +1 -0
- package/dist/cjs/retry-util.js +31 -0
- package/dist/cjs/retry-util.js.map +1 -0
- package/dist/cjs/sql.d.ts +82 -0
- package/dist/cjs/sql.d.ts.map +1 -0
- package/dist/cjs/sql.js +396 -0
- package/dist/cjs/sql.js.map +1 -0
- package/dist/cjs/sweep.d.ts +4 -0
- package/dist/cjs/sweep.d.ts.map +1 -0
- package/dist/cjs/sweep.js +46 -0
- package/dist/cjs/sweep.js.map +1 -0
- package/dist/cjs/tick.d.ts +11 -0
- package/dist/cjs/tick.d.ts.map +1 -0
- package/dist/cjs/tick.js +82 -0
- package/dist/cjs/tick.js.map +1 -0
- package/dist/cjs/util.d.ts +2 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +7 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/cjs/worker.d.ts +42 -0
- package/dist/cjs/worker.d.ts.map +1 -0
- package/dist/cjs/worker.js +232 -0
- package/dist/cjs/worker.js.map +1 -0
- package/dist/esm/archive.d.ts +8 -0
- package/dist/esm/archive.d.ts.map +1 -0
- package/dist/esm/archive.js +76 -0
- package/dist/esm/archive.js.map +1 -0
- package/dist/esm/boss.d.ts +45 -0
- package/dist/esm/boss.d.ts.map +1 -0
- package/dist/esm/boss.js +201 -0
- package/dist/esm/boss.js.map +1 -0
- package/dist/esm/claim.d.ts +5 -0
- package/dist/esm/claim.d.ts.map +1 -0
- package/dist/esm/claim.js +44 -0
- package/dist/esm/claim.js.map +1 -0
- package/dist/esm/connection.d.ts +4 -0
- package/dist/esm/connection.d.ts.map +1 -0
- package/dist/esm/connection.js +22 -0
- package/dist/esm/connection.js.map +1 -0
- package/dist/esm/cron/next.d.ts +3 -0
- package/dist/esm/cron/next.d.ts.map +1 -0
- package/dist/esm/cron/next.js +176 -0
- package/dist/esm/cron/next.js.map +1 -0
- package/dist/esm/cron/parse.d.ts +11 -0
- package/dist/esm/cron/parse.d.ts.map +1 -0
- package/dist/esm/cron/parse.js +96 -0
- package/dist/esm/cron/parse.js.map +1 -0
- package/dist/esm/dlq.d.ts +11 -0
- package/dist/esm/dlq.d.ts.map +1 -0
- package/dist/esm/dlq.js +87 -0
- package/dist/esm/dlq.js.map +1 -0
- package/dist/esm/errors.d.ts +10 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +19 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/fail.d.ts +8 -0
- package/dist/esm/fail.d.ts.map +1 -0
- package/dist/esm/fail.js +16 -0
- package/dist/esm/fail.js.map +1 -0
- package/dist/esm/heartbeat.d.ts +4 -0
- package/dist/esm/heartbeat.d.ts.map +1 -0
- package/dist/esm/heartbeat.js +15 -0
- package/dist/esm/heartbeat.js.map +1 -0
- package/dist/esm/index.d.ts +70 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/migrate.d.ts +4 -0
- package/dist/esm/migrate.d.ts.map +1 -0
- package/dist/esm/migrate.js +11 -0
- package/dist/esm/migrate.js.map +1 -0
- package/dist/esm/retry-util.d.ts +2 -0
- package/dist/esm/retry-util.d.ts.map +1 -0
- package/dist/esm/retry-util.js +28 -0
- package/dist/esm/retry-util.js.map +1 -0
- package/dist/esm/sql.d.ts +82 -0
- package/dist/esm/sql.d.ts.map +1 -0
- package/dist/esm/sql.js +392 -0
- package/dist/esm/sql.js.map +1 -0
- package/dist/esm/sweep.d.ts +4 -0
- package/dist/esm/sweep.d.ts.map +1 -0
- package/dist/esm/sweep.js +43 -0
- package/dist/esm/sweep.js.map +1 -0
- package/dist/esm/tick.d.ts +11 -0
- package/dist/esm/tick.d.ts.map +1 -0
- package/dist/esm/tick.js +77 -0
- package/dist/esm/tick.js.map +1 -0
- package/dist/esm/util.d.ts +2 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +4 -0
- package/dist/esm/util.js.map +1 -0
- package/dist/esm/worker.d.ts +42 -0
- package/dist/esm/worker.d.ts.map +1 -0
- package/dist/esm/worker.js +228 -0
- package/dist/esm/worker.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../../src/cron/next.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface CronFields {
|
|
2
|
+
minutes: Set<number>;
|
|
3
|
+
hours: Set<number>;
|
|
4
|
+
daysOfMonth: Set<number>;
|
|
5
|
+
months: Set<number>;
|
|
6
|
+
daysOfWeek: Set<number>;
|
|
7
|
+
hasDom: boolean;
|
|
8
|
+
hasDow: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function parseCron(expression: string): CronFields;
|
|
11
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/cron/parse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CAChB;AA0FD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAmBxD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseCron = parseCron;
|
|
4
|
+
const MONTH_NAMES = {
|
|
5
|
+
jan: 1,
|
|
6
|
+
feb: 2,
|
|
7
|
+
mar: 3,
|
|
8
|
+
apr: 4,
|
|
9
|
+
may: 5,
|
|
10
|
+
jun: 6,
|
|
11
|
+
jul: 7,
|
|
12
|
+
aug: 8,
|
|
13
|
+
sep: 9,
|
|
14
|
+
oct: 10,
|
|
15
|
+
nov: 11,
|
|
16
|
+
dec: 12,
|
|
17
|
+
};
|
|
18
|
+
const DOW_NAMES = {
|
|
19
|
+
sun: 0,
|
|
20
|
+
mon: 1,
|
|
21
|
+
tue: 2,
|
|
22
|
+
wed: 3,
|
|
23
|
+
thu: 4,
|
|
24
|
+
fri: 5,
|
|
25
|
+
sat: 6,
|
|
26
|
+
};
|
|
27
|
+
function parseField(field, min, max, names) {
|
|
28
|
+
const result = new Set();
|
|
29
|
+
for (const part of field.split(",")) {
|
|
30
|
+
const stepParts = part.split("/");
|
|
31
|
+
const step = stepParts.length > 1 ? Number.parseInt(stepParts[1], 10) : 1;
|
|
32
|
+
if (Number.isNaN(step) || step < 1) {
|
|
33
|
+
throw new Error(`Invalid step in cron field: ${part}`);
|
|
34
|
+
}
|
|
35
|
+
const rangePart = stepParts[0];
|
|
36
|
+
if (rangePart === "*") {
|
|
37
|
+
for (let i = min; i <= max; i += step) {
|
|
38
|
+
result.add(i);
|
|
39
|
+
}
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const resolve = (val) => {
|
|
43
|
+
if (names) {
|
|
44
|
+
const lower = val.toLowerCase();
|
|
45
|
+
if (lower in names)
|
|
46
|
+
return names[lower];
|
|
47
|
+
}
|
|
48
|
+
const n = Number.parseInt(val, 10);
|
|
49
|
+
if (Number.isNaN(n) || n < min || n > max) {
|
|
50
|
+
throw new Error(`Value out of range [${min}-${max}]: ${val}`);
|
|
51
|
+
}
|
|
52
|
+
return n;
|
|
53
|
+
};
|
|
54
|
+
if (rangePart.includes("-")) {
|
|
55
|
+
const [startStr, endStr] = rangePart.split("-");
|
|
56
|
+
const start = resolve(startStr);
|
|
57
|
+
const end = resolve(endStr);
|
|
58
|
+
if (start > end) {
|
|
59
|
+
// Wrap-around for dow
|
|
60
|
+
for (let i = start; i <= max; i += step)
|
|
61
|
+
result.add(i);
|
|
62
|
+
for (let i = min; i <= end; i += step)
|
|
63
|
+
result.add(i);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
for (let i = start; i <= end; i += step)
|
|
67
|
+
result.add(i);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
result.add(resolve(rangePart));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
function normalizeDow(set) {
|
|
77
|
+
if (set.has(7)) {
|
|
78
|
+
set.add(0);
|
|
79
|
+
set.delete(7);
|
|
80
|
+
}
|
|
81
|
+
return set;
|
|
82
|
+
}
|
|
83
|
+
function parseCron(expression) {
|
|
84
|
+
const parts = expression.trim().split(/\s+/);
|
|
85
|
+
if (parts.length !== 5) {
|
|
86
|
+
throw new Error(`Cron expression must have exactly 5 fields, got ${parts.length}: "${expression}"`);
|
|
87
|
+
}
|
|
88
|
+
const [minStr, hourStr, domStr, monStr, dowStr] = parts;
|
|
89
|
+
return {
|
|
90
|
+
minutes: parseField(minStr, 0, 59),
|
|
91
|
+
hours: parseField(hourStr, 0, 23),
|
|
92
|
+
daysOfMonth: parseField(domStr, 1, 31, undefined),
|
|
93
|
+
months: parseField(monStr, 1, 12, MONTH_NAMES),
|
|
94
|
+
daysOfWeek: normalizeDow(parseField(dowStr, 0, 7, DOW_NAMES)),
|
|
95
|
+
hasDom: domStr !== "*",
|
|
96
|
+
hasDow: dowStr !== "*",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/cron/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Pool } from "mysql2/promise";
|
|
2
|
+
import type { DeadJob } from "./index.js";
|
|
3
|
+
import { type SqlStatements } from "./sql.js";
|
|
4
|
+
export declare function deadLetterJob(pool: Pool, jobId: string, workerId: string, error: {
|
|
5
|
+
message: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
at: string;
|
|
8
|
+
}, sql?: SqlStatements): Promise<boolean>;
|
|
9
|
+
export declare function listDead(pool: Pool, queue: string, before: Date, after: Date, limit: number, offset: number, sql?: SqlStatements): Promise<DeadJob[]>;
|
|
10
|
+
export declare function replayDead(pool: Pool, ids: string[], sql?: SqlStatements): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=dlq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlq.d.ts","sourceRoot":"","sources":["../../src/dlq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAkC,MAAM,gBAAgB,CAAC;AAG3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,UAAU,CAAC;AAG9D,wBAAsB,aAAa,CAClC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACtD,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAaD,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,OAAO,EAAE,CAAC,CAoBpB;AAID,wBAAsB,UAAU,CAC/B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EAAE,EACb,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
|
package/dist/cjs/dlq.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deadLetterJob = deadLetterJob;
|
|
4
|
+
exports.listDead = listDead;
|
|
5
|
+
exports.replayDead = replayDead;
|
|
6
|
+
const connection_js_1 = require("./connection.js");
|
|
7
|
+
const errors_js_1 = require("./errors.js");
|
|
8
|
+
const retry_util_js_1 = require("./retry-util.js");
|
|
9
|
+
const sql_js_1 = require("./sql.js");
|
|
10
|
+
const util_js_1 = require("./util.js");
|
|
11
|
+
async function deadLetterJob(pool, jobId, workerId, error, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
12
|
+
return (0, retry_util_js_1.withDeadlockRetry)(async () => {
|
|
13
|
+
const conn = await (0, connection_js_1.acquireConnection)(pool);
|
|
14
|
+
try {
|
|
15
|
+
await conn.beginTransaction();
|
|
16
|
+
const [result] = await conn.query(sql.DLQ_INSERT, [
|
|
17
|
+
JSON.stringify(error),
|
|
18
|
+
jobId,
|
|
19
|
+
workerId,
|
|
20
|
+
]);
|
|
21
|
+
if (result.affectedRows === 0) {
|
|
22
|
+
await conn.commit();
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
await conn.query(sql.DLQ_DELETE, [jobId, workerId]);
|
|
26
|
+
await conn.commit();
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
await conn.rollback().catch(() => { });
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
conn.release();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function listDead(pool, queue, before, after, limit, offset, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
39
|
+
return (0, connection_js_1.withConnection)(pool, async (connection) => {
|
|
40
|
+
const [rows] = await connection.query(sql.LIST_DEAD, [
|
|
41
|
+
queue,
|
|
42
|
+
(0, util_js_1.toUtcString)(after),
|
|
43
|
+
(0, util_js_1.toUtcString)(before),
|
|
44
|
+
limit,
|
|
45
|
+
offset,
|
|
46
|
+
]);
|
|
47
|
+
return rows.map((r) => ({
|
|
48
|
+
id: r.id,
|
|
49
|
+
queue: r.queue,
|
|
50
|
+
payload: r.payload,
|
|
51
|
+
priority: r.priority,
|
|
52
|
+
retryCount: r.retry_count,
|
|
53
|
+
createdAt: new Date(Number(r.created_at_unix) * 1000),
|
|
54
|
+
failedAt: new Date(Number(r.failed_at_unix) * 1000),
|
|
55
|
+
lastError: r.last_error,
|
|
56
|
+
}));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const ER_DUP_ENTRY = 1062;
|
|
60
|
+
async function replayDead(pool, ids, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
61
|
+
return (0, retry_util_js_1.withDeadlockRetry)(async () => {
|
|
62
|
+
const conn = await (0, connection_js_1.acquireConnection)(pool);
|
|
63
|
+
try {
|
|
64
|
+
await conn.beginTransaction();
|
|
65
|
+
try {
|
|
66
|
+
const bigIds = ids.map(BigInt);
|
|
67
|
+
const [result] = await conn.query(sql.REPLAY_INSERT, [
|
|
68
|
+
bigIds,
|
|
69
|
+
]);
|
|
70
|
+
if (result.affectedRows > 0) {
|
|
71
|
+
await conn.query(sql.REPLAY_DELETE, [bigIds]);
|
|
72
|
+
}
|
|
73
|
+
await conn.commit();
|
|
74
|
+
return result.affectedRows;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
await conn.rollback();
|
|
78
|
+
if (typeof err === "object" &&
|
|
79
|
+
err !== null &&
|
|
80
|
+
"errno" in err &&
|
|
81
|
+
err.errno === ER_DUP_ENTRY) {
|
|
82
|
+
throw new errors_js_1.SingletonCollisionError("Replay collides with a live singleton job");
|
|
83
|
+
}
|
|
84
|
+
throw err;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
conn.release();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=dlq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlq.js","sourceRoot":"","sources":["../../src/dlq.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class ConfigError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class ValidationError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class SingletonCollisionError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SingletonCollisionError = exports.ValidationError = exports.ConfigError = void 0;
|
|
4
|
+
class ConfigError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "ConfigError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.ConfigError = ConfigError;
|
|
11
|
+
class ValidationError extends Error {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = "ValidationError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ValidationError = ValidationError;
|
|
18
|
+
class SingletonCollisionError extends Error {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = "SingletonCollisionError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.SingletonCollisionError = SingletonCollisionError;
|
|
25
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,iBAAyB,SAAQ,KAAK;IACrC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC3B,CAAC;CACD;;AAED,qBAA6B,SAAQ,KAAK;IACzC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC/B,CAAC;CACD;;AAED,6BAAqC,SAAQ,KAAK;IACjD,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACvC,CAAC;CACD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Pool } from "mysql2/promise";
|
|
2
|
+
import { type SqlStatements } from "./sql.js";
|
|
3
|
+
export declare function failJob(pool: Pool, jobId: string, workerId: string, error: {
|
|
4
|
+
message: string;
|
|
5
|
+
stack?: string;
|
|
6
|
+
at: string;
|
|
7
|
+
}, sql?: SqlStatements): Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=fail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fail.d.ts","sourceRoot":"","sources":["../../src/fail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,UAAU,CAAC;AAE9D,wBAAsB,OAAO,CAC5B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACtD,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,OAAO,CAAC,CAWlB"}
|
package/dist/cjs/fail.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.failJob = failJob;
|
|
4
|
+
const connection_js_1 = require("./connection.js");
|
|
5
|
+
const retry_util_js_1 = require("./retry-util.js");
|
|
6
|
+
const sql_js_1 = require("./sql.js");
|
|
7
|
+
async function failJob(pool, jobId, workerId, error, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
8
|
+
return (0, retry_util_js_1.withDeadlockRetry)(async () => {
|
|
9
|
+
return (0, connection_js_1.withConnection)(pool, async (connection) => {
|
|
10
|
+
const [result] = await connection.query(sql.FAIL_RETRY, [
|
|
11
|
+
JSON.stringify(error),
|
|
12
|
+
jobId,
|
|
13
|
+
workerId,
|
|
14
|
+
]);
|
|
15
|
+
return result.affectedRows > 0;
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=fail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fail.js","sourceRoot":"","sources":["../../src/fail.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,mDAAoD;AACpD,qCAA8D;AAEvD,KAAK,kBACX,IAAU,EACV,KAAa,EACb,QAAgB,EAChB,KAAsD,EACtD,GAAG,GAAkB,uBAAc;IAEnC,OAAO,IAAA,iCAAiB,EAAC,KAAK,IAAI,EAAE;QACnC,OAAO,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAChD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CAAkB,GAAG,CAAC,UAAU,EAAE;gBACxE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB,KAAK;gBACL,QAAQ;aACR,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Pool } from "mysql2/promise";
|
|
2
|
+
import { type SqlStatements } from "./sql.js";
|
|
3
|
+
export declare function heartbeatOwnedJobs(pool: Pool, jobIds: bigint[], workerId: string, leaseSeconds: number, sql?: SqlStatements): Promise<Set<string>>;
|
|
4
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,UAAU,CAAC;AAM9D,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAUtB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.heartbeatOwnedJobs = heartbeatOwnedJobs;
|
|
4
|
+
const connection_js_1 = require("./connection.js");
|
|
5
|
+
const sql_js_1 = require("./sql.js");
|
|
6
|
+
async function heartbeatOwnedJobs(pool, jobIds, workerId, leaseSeconds, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
7
|
+
if (jobIds.length === 0)
|
|
8
|
+
return new Set();
|
|
9
|
+
return (0, connection_js_1.withConnection)(pool, async (connection) => {
|
|
10
|
+
await connection.query(sql.HEARTBEAT, [leaseSeconds, jobIds, workerId]);
|
|
11
|
+
const [rows] = await connection.query(sql.HEARTBEAT_OWNED, [
|
|
12
|
+
jobIds,
|
|
13
|
+
workerId,
|
|
14
|
+
]);
|
|
15
|
+
return new Set(rows.map((row) => row.id));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=heartbeat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,qCAA8D;AAMvD,KAAK,6BACX,IAAU,EACV,MAAgB,EAChB,QAAgB,EAChB,YAAoB,EACpB,GAAG,GAAkB,uBAAc;IAEnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC1C,OAAO,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QAChD,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CAAa,GAAG,CAAC,eAAe,EAAE;YACtE,MAAM;YACN,QAAQ;SACR,CAAC,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Pool } from "mysql2/promise";
|
|
2
|
+
export interface MysqlBossOptions {
|
|
3
|
+
pool: Pool;
|
|
4
|
+
/**
|
|
5
|
+
* Prefix for all queue tables. Defaults to "mysql_boss", producing
|
|
6
|
+
* mysql_boss_jobs, mysql_boss_jobs_archive, mysql_boss_jobs_dead, and
|
|
7
|
+
* mysql_boss_schedules. Set to "" to use the legacy unprefixed names.
|
|
8
|
+
*/
|
|
9
|
+
tablePrefix?: string;
|
|
10
|
+
pollIntervalMs?: number;
|
|
11
|
+
batchSize?: number;
|
|
12
|
+
concurrency?: number;
|
|
13
|
+
leaseSeconds?: number;
|
|
14
|
+
heartbeatSeconds?: number;
|
|
15
|
+
sweepIntervalMs?: number;
|
|
16
|
+
tickIntervalMs?: number;
|
|
17
|
+
archiveRetentionDays?: number;
|
|
18
|
+
drainTimeoutMs?: number;
|
|
19
|
+
onError?: (err: unknown, context: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export interface EnqueueOptions {
|
|
22
|
+
priority?: number;
|
|
23
|
+
singletonKey?: string;
|
|
24
|
+
retryLimit?: number;
|
|
25
|
+
retryDelaySecs?: number;
|
|
26
|
+
retryBackoff?: boolean;
|
|
27
|
+
runAt?: Date;
|
|
28
|
+
}
|
|
29
|
+
export interface ActiveJob<T = unknown> {
|
|
30
|
+
id: string;
|
|
31
|
+
queue: string;
|
|
32
|
+
payload: T;
|
|
33
|
+
retryCount: number;
|
|
34
|
+
retryLimit: number;
|
|
35
|
+
}
|
|
36
|
+
export type JobHandler<T = unknown> = (job: ActiveJob<T>, ctx: {
|
|
37
|
+
signal: AbortSignal;
|
|
38
|
+
}) => Promise<void>;
|
|
39
|
+
export interface DeadJob<T = unknown> {
|
|
40
|
+
id: string;
|
|
41
|
+
queue: string;
|
|
42
|
+
payload: T;
|
|
43
|
+
priority: number;
|
|
44
|
+
retryCount: number;
|
|
45
|
+
createdAt: Date;
|
|
46
|
+
failedAt: Date;
|
|
47
|
+
lastError: {
|
|
48
|
+
message: string;
|
|
49
|
+
stack?: string;
|
|
50
|
+
at: string;
|
|
51
|
+
} | null;
|
|
52
|
+
}
|
|
53
|
+
export interface ArchivedJob<T = unknown> {
|
|
54
|
+
id: string;
|
|
55
|
+
queue: string;
|
|
56
|
+
payload: T;
|
|
57
|
+
priority: number;
|
|
58
|
+
retryCount: number;
|
|
59
|
+
createdAt: Date;
|
|
60
|
+
startedAt: Date;
|
|
61
|
+
completedAt: Date;
|
|
62
|
+
durationMs: number;
|
|
63
|
+
}
|
|
64
|
+
export interface ScheduleOptions extends Omit<EnqueueOptions, "singletonKey" | "runAt"> {
|
|
65
|
+
timezone?: string;
|
|
66
|
+
payload?: unknown;
|
|
67
|
+
}
|
|
68
|
+
export { MysqlBoss } from "./boss.js";
|
|
69
|
+
export { ConfigError, ValidationError, SingletonCollisionError, } from "./errors.js";
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,IAAI,CAAC;IACX;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,CACrC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EACjB,GAAG,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,OAAO;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAChB,SAAQ,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACN,WAAW,EACX,eAAe,EACf,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SingletonCollisionError = exports.ValidationError = exports.ConfigError = exports.MysqlBoss = void 0;
|
|
4
|
+
var boss_js_1 = require("./boss.js");
|
|
5
|
+
Object.defineProperty(exports, "MysqlBoss", { enumerable: true, get: function () { return boss_js_1.MysqlBoss; } });
|
|
6
|
+
var errors_js_1 = require("./errors.js");
|
|
7
|
+
Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return errors_js_1.ConfigError; } });
|
|
8
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_js_1.ValidationError; } });
|
|
9
|
+
Object.defineProperty(exports, "SingletonCollisionError", { enumerable: true, get: function () { return errors_js_1.SingletonCollisionError; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAyEA,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AAClB,yCAIqB;AAHpB,wGAAA,WAAW,OAAA;AACX,4GAAA,eAAe,OAAA;AACf,oHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,UAAU,CAAC;AAE9D,wBAAsB,OAAO,CAC5B,IAAI,EAAE,IAAI,EACV,GAAG,GAAE,aAA8B,GACjC,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.migrate = migrate;
|
|
4
|
+
const connection_js_1 = require("./connection.js");
|
|
5
|
+
const sql_js_1 = require("./sql.js");
|
|
6
|
+
async function migrate(pool, sql = sql_js_1.UNPREFIXED_SQL) {
|
|
7
|
+
await (0, connection_js_1.withConnection)(pool, async (connection) => {
|
|
8
|
+
await connection.query(sql.CREATE_JOBS);
|
|
9
|
+
await connection.query(sql.CREATE_JOBS_ARCHIVE);
|
|
10
|
+
await connection.query(sql.CREATE_JOBS_DEAD);
|
|
11
|
+
await connection.query(sql.CREATE_SCHEDULES);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,qCAA8D;AAEvD,KAAK,kBACX,IAAU,EACV,GAAG,GAAkB,uBAAc;IAEnC,MAAM,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QAC/C,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-util.d.ts","sourceRoot":"","sources":["../../src/retry-util.ts"],"names":[],"mappings":"AAYA,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAe3E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withDeadlockRetry = withDeadlockRetry;
|
|
4
|
+
const ER_LOCK_DEADLOCK = 1213;
|
|
5
|
+
const ER_LOCK_WAIT_TIMEOUT = 1205;
|
|
6
|
+
const MAX_RETRIES = 3;
|
|
7
|
+
function isRetryable(err) {
|
|
8
|
+
if (typeof err === "object" && err !== null && "errno" in err) {
|
|
9
|
+
const errno = err.errno;
|
|
10
|
+
return errno === ER_LOCK_DEADLOCK || errno === ER_LOCK_WAIT_TIMEOUT;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
async function withDeadlockRetry(fn) {
|
|
15
|
+
let lastErr;
|
|
16
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
return await fn();
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
lastErr = err;
|
|
22
|
+
if (!isRetryable(err) || attempt === MAX_RETRIES - 1) {
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
const jitter = Math.random() * 50 * (attempt + 1);
|
|
26
|
+
await new Promise((resolve) => setTimeout(resolve, jitter));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
throw lastErr;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=retry-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-util.js","sourceRoot":"","sources":["../../src/retry-util.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,SAAS,WAAW,CAAC,GAAY;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAI,GAAyB,CAAC,KAAK,CAAC;QAC/C,OAAO,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,oBAAoB,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAEM,KAAK,4BAA+B,EAAoB;IAC9D,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,MAAM,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,GAAG,CAAC;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IACD,MAAM,OAAO,CAAC;AACf,CAAC"}
|