bullmq 5.15.0 → 5.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/cjs/classes/job-scheduler.js +140 -0
- package/dist/cjs/classes/job-scheduler.js.map +1 -0
- package/dist/cjs/classes/job.js +1 -1
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/queue.js +64 -0
- package/dist/cjs/classes/queue.js.map +1 -1
- package/dist/cjs/classes/repeat.js +9 -10
- package/dist/cjs/classes/repeat.js.map +1 -1
- package/dist/cjs/classes/scripts.js +45 -39
- package/dist/cjs/classes/scripts.js.map +1 -1
- package/dist/cjs/classes/worker.js +23 -4
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/addJobScheduler-2.lua +75 -0
- package/dist/cjs/commands/{cleanJobsInSet-2.lua → cleanJobsInSet-3.lua} +6 -5
- package/dist/cjs/commands/drain-5.lua +41 -0
- package/dist/cjs/commands/includes/cleanSet.lua +50 -29
- package/dist/cjs/commands/includes/removeZSetJobs.lua +13 -1
- package/dist/cjs/commands/moveStalledJobsToWait-9.lua +2 -4
- package/dist/cjs/commands/removeJob-2.lua +17 -9
- package/dist/cjs/commands/removeJobScheduler-3.lua +43 -0
- package/dist/cjs/enums/error-code.js +1 -0
- package/dist/cjs/enums/error-code.js.map +1 -1
- package/dist/cjs/scripts/addJobScheduler-2.js +223 -0
- package/dist/cjs/scripts/addJobScheduler-2.js.map +1 -0
- package/dist/cjs/scripts/{cleanJobsInSet-2.js → cleanJobsInSet-3.js} +57 -35
- package/dist/cjs/scripts/{cleanJobsInSet-2.js.map → cleanJobsInSet-3.js.map} +1 -1
- package/dist/cjs/scripts/{drain-4.js → drain-5.js} +28 -7
- package/dist/cjs/scripts/drain-5.js.map +1 -0
- package/dist/cjs/scripts/index.js +4 -2
- package/dist/cjs/scripts/index.js.map +1 -1
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js +2 -3
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/cjs/scripts/obliterate-2.js +11 -1
- package/dist/cjs/scripts/obliterate-2.js.map +1 -1
- package/dist/cjs/scripts/removeJob-2.js +16 -9
- package/dist/cjs/scripts/removeJob-2.js.map +1 -1
- package/dist/cjs/scripts/removeJobScheduler-3.js +49 -0
- package/dist/cjs/scripts/removeJobScheduler-3.js.map +1 -0
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/cjs/utils.js +25 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/classes/job-scheduler.d.ts +30 -0
- package/dist/esm/classes/job-scheduler.js +135 -0
- package/dist/esm/classes/job-scheduler.js.map +1 -0
- package/dist/esm/classes/job.d.ts +1 -1
- package/dist/esm/classes/job.js +2 -2
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/queue.d.ts +47 -0
- package/dist/esm/classes/queue.js +64 -0
- package/dist/esm/classes/queue.js.map +1 -1
- package/dist/esm/classes/repeat.js +9 -10
- package/dist/esm/classes/repeat.js.map +1 -1
- package/dist/esm/classes/scripts.d.ts +3 -7
- package/dist/esm/classes/scripts.js +46 -40
- package/dist/esm/classes/scripts.js.map +1 -1
- package/dist/esm/classes/worker.d.ts +3 -0
- package/dist/esm/classes/worker.js +23 -4
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/addJobScheduler-2.lua +75 -0
- package/dist/esm/commands/{cleanJobsInSet-2.lua → cleanJobsInSet-3.lua} +6 -5
- package/dist/esm/commands/drain-5.lua +41 -0
- package/dist/esm/commands/includes/cleanSet.lua +50 -29
- package/dist/esm/commands/includes/removeZSetJobs.lua +13 -1
- package/dist/esm/commands/moveStalledJobsToWait-9.lua +2 -4
- package/dist/esm/commands/removeJob-2.lua +17 -9
- package/dist/esm/commands/removeJobScheduler-3.lua +43 -0
- package/dist/esm/enums/error-code.d.ts +2 -1
- package/dist/esm/enums/error-code.js +1 -0
- package/dist/esm/enums/error-code.js.map +1 -1
- package/dist/esm/scripts/addJobScheduler-2.d.ts +5 -0
- package/dist/esm/scripts/addJobScheduler-2.js +220 -0
- package/dist/esm/scripts/addJobScheduler-2.js.map +1 -0
- package/dist/esm/scripts/{cleanJobsInSet-2.js → cleanJobsInSet-3.js} +57 -35
- package/dist/esm/scripts/{cleanJobsInSet-2.js.map → cleanJobsInSet-3.js.map} +1 -1
- package/dist/esm/scripts/{drain-4.js → drain-5.js} +28 -7
- package/dist/esm/scripts/drain-5.js.map +1 -0
- package/dist/esm/scripts/index.d.ts +4 -2
- package/dist/esm/scripts/index.js +4 -2
- package/dist/esm/scripts/index.js.map +1 -1
- package/dist/esm/scripts/moveStalledJobsToWait-9.js +2 -3
- package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/esm/scripts/obliterate-2.js +11 -1
- package/dist/esm/scripts/obliterate-2.js.map +1 -1
- package/dist/esm/scripts/removeJob-2.js +16 -9
- package/dist/esm/scripts/removeJob-2.js.map +1 -1
- package/dist/esm/scripts/removeJobScheduler-3.d.ts +5 -0
- package/dist/esm/scripts/removeJobScheduler-3.js +46 -0
- package/dist/esm/scripts/removeJobScheduler-3.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +7 -0
- package/dist/esm/utils.js +23 -0
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/commands/drain-4.lua +0 -26
- package/dist/cjs/scripts/drain-4.js.map +0 -1
- package/dist/esm/commands/drain-4.lua +0 -26
- package/dist/esm/scripts/drain-4.js.map +0 -1
- /package/dist/esm/scripts/{cleanJobsInSet-2.d.ts → cleanJobsInSet-3.d.ts} +0 -0
- /package/dist/esm/scripts/{drain-4.d.ts → drain-5.d.ts} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cleanJobsInSet-
|
1
|
+
{"version":3,"file":"cleanJobsInSet-3.js","sourceRoot":"","sources":["../../../src/scripts/cleanJobsInSet-3.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoVf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -9,6 +9,7 @@ const content = `--[[
|
|
9
9
|
KEYS[2] 'paused'
|
10
10
|
KEYS[3] 'delayed'
|
11
11
|
KEYS[4] 'prioritized'
|
12
|
+
KEYS[5] 'jobschedulers' (repeat)
|
12
13
|
ARGV[1] queue key prefix
|
13
14
|
]]
|
14
15
|
local rcall = redis.call
|
@@ -212,8 +213,18 @@ end
|
|
212
213
|
local function getZSetItems(keyName, max)
|
213
214
|
return rcall('ZRANGE', keyName, 0, max - 1)
|
214
215
|
end
|
215
|
-
local function removeZSetJobs(keyName, hard, baseKey, max)
|
216
|
+
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
|
216
217
|
local jobs = getZSetItems(keyName, max)
|
218
|
+
-- filter out jobs to ignore
|
219
|
+
if jobsToIgnore then
|
220
|
+
local filteredJobs = {}
|
221
|
+
for i = 1, #jobs do
|
222
|
+
if not jobsToIgnore[jobs[i]] then
|
223
|
+
table.insert(filteredJobs, jobs[i])
|
224
|
+
end
|
225
|
+
end
|
226
|
+
jobs = filteredJobs
|
227
|
+
end
|
217
228
|
local count = removeJobs(jobs, hard, baseKey, max)
|
218
229
|
if(#jobs > 0) then
|
219
230
|
for from, to in batches(#jobs, 7000) do
|
@@ -222,16 +233,26 @@ local function removeZSetJobs(keyName, hard, baseKey, max)
|
|
222
233
|
end
|
223
234
|
return count
|
224
235
|
end
|
225
|
-
removeListJobs(KEYS[1], true, queueBaseKey, 0) --wait
|
226
|
-
removeListJobs(KEYS[2], true, queueBaseKey, 0) --paused
|
236
|
+
removeListJobs(KEYS[1], true, queueBaseKey, 0) -- wait
|
237
|
+
removeListJobs(KEYS[2], true, queueBaseKey, 0) -- paused
|
227
238
|
if KEYS[3] ~= "" then
|
228
|
-
|
239
|
+
-- We must not remove delayed jobs if they are associated to a job scheduler.
|
240
|
+
local scheduledJobs = {}
|
241
|
+
local jobSchedulers = rcall("ZRANGE", KEYS[5], 0, -1, "WITHSCORES")
|
242
|
+
-- For every job scheduler, get the current delayed job id.
|
243
|
+
for i = 1, #jobSchedulers, 2 do
|
244
|
+
local jobSchedulerId = jobSchedulers[i]
|
245
|
+
local jobSchedulerMillis = jobSchedulers[i + 1]
|
246
|
+
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. jobSchedulerMillis
|
247
|
+
scheduledJobs[delayedJobId] = true
|
248
|
+
end
|
249
|
+
removeZSetJobs(KEYS[3], true, queueBaseKey, 0, scheduledJobs) -- delayed
|
229
250
|
end
|
230
|
-
removeZSetJobs(KEYS[4], true, queueBaseKey, 0) --prioritized
|
251
|
+
removeZSetJobs(KEYS[4], true, queueBaseKey, 0) -- prioritized
|
231
252
|
`;
|
232
253
|
exports.drain = {
|
233
254
|
name: 'drain',
|
234
255
|
content,
|
235
|
-
keys:
|
256
|
+
keys: 5,
|
236
257
|
};
|
237
|
-
//# sourceMappingURL=drain-
|
258
|
+
//# sourceMappingURL=drain-5.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"drain-5.js","sourceRoot":"","sources":["../../../src/scripts/drain-5.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwPf,CAAC;AACW,QAAA,KAAK,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const tslib_1 = require("tslib");
|
4
4
|
tslib_1.__exportStar(require("./addDelayedJob-6"), exports);
|
5
|
+
tslib_1.__exportStar(require("./addJobScheduler-2"), exports);
|
5
6
|
tslib_1.__exportStar(require("./addLog-2"), exports);
|
6
7
|
tslib_1.__exportStar(require("./addParentJob-4"), exports);
|
7
8
|
tslib_1.__exportStar(require("./addPrioritizedJob-8"), exports);
|
@@ -9,8 +10,8 @@ tslib_1.__exportStar(require("./addRepeatableJob-2"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./addStandardJob-8"), exports);
|
10
11
|
tslib_1.__exportStar(require("./changeDelay-4"), exports);
|
11
12
|
tslib_1.__exportStar(require("./changePriority-7"), exports);
|
12
|
-
tslib_1.__exportStar(require("./cleanJobsInSet-
|
13
|
-
tslib_1.__exportStar(require("./drain-
|
13
|
+
tslib_1.__exportStar(require("./cleanJobsInSet-3"), exports);
|
14
|
+
tslib_1.__exportStar(require("./drain-5"), exports);
|
14
15
|
tslib_1.__exportStar(require("./extendLock-2"), exports);
|
15
16
|
tslib_1.__exportStar(require("./getCounts-1"), exports);
|
16
17
|
tslib_1.__exportStar(require("./getCountsPerPriority-4"), exports);
|
@@ -35,6 +36,7 @@ tslib_1.__exportStar(require("./promote-9"), exports);
|
|
35
36
|
tslib_1.__exportStar(require("./releaseLock-1"), exports);
|
36
37
|
tslib_1.__exportStar(require("./removeChildDependency-1"), exports);
|
37
38
|
tslib_1.__exportStar(require("./removeJob-2"), exports);
|
39
|
+
tslib_1.__exportStar(require("./removeJobScheduler-3"), exports);
|
38
40
|
tslib_1.__exportStar(require("./removeRepeatable-3"), exports);
|
39
41
|
tslib_1.__exportStar(require("./reprocessJob-8"), exports);
|
40
42
|
tslib_1.__exportStar(require("./retryJob-11"), exports);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,wDAA8B;AAC9B,mEAAyC;AACzC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,uEAA6C;AAC7C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,6DAAmC;AACnC,wEAA8C"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,8DAAoC;AACpC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,wDAA8B;AAC9B,mEAAyC;AACzC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,uEAA6C;AAC7C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,6DAAmC;AACnC,wEAA8C"}
|
@@ -393,7 +393,7 @@ local metaKey = KEYS[6]
|
|
393
393
|
local pausedKey = KEYS[7]
|
394
394
|
local markerKey = KEYS[8]
|
395
395
|
local eventStreamKey = KEYS[9]
|
396
|
-
local maxStalledJobCount = ARGV[1]
|
396
|
+
local maxStalledJobCount = tonumber(ARGV[1])
|
397
397
|
local queueKeyPrefix = ARGV[2]
|
398
398
|
local timestamp = ARGV[3]
|
399
399
|
local maxCheckTime = ARGV[4]
|
@@ -407,7 +407,6 @@ local stalled = {}
|
|
407
407
|
local failed = {}
|
408
408
|
if (#stalling > 0) then
|
409
409
|
rcall('DEL', stalledKey)
|
410
|
-
local MAX_STALLED_JOB_COUNT = tonumber(maxStalledJobCount)
|
411
410
|
-- Remove from active list
|
412
411
|
for i, jobId in ipairs(stalling) do
|
413
412
|
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
|
@@ -424,7 +423,7 @@ if (#stalling > 0) then
|
|
424
423
|
-- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
|
425
424
|
local stalledCount =
|
426
425
|
rcall("HINCRBY", jobKey, "stalledCounter", 1)
|
427
|
-
if (stalledCount >
|
426
|
+
if (stalledCount > maxStalledJobCount) then
|
428
427
|
local jobAttributes = rcall("HMGET", jobKey, "opts", "parent", "deid")
|
429
428
|
local rawOpts = jobAttributes[1]
|
430
429
|
local rawParentData = jobAttributes[2]
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA2fS,CAAC;AACb,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -218,8 +218,18 @@ end
|
|
218
218
|
local function getZSetItems(keyName, max)
|
219
219
|
return rcall('ZRANGE', keyName, 0, max - 1)
|
220
220
|
end
|
221
|
-
local function removeZSetJobs(keyName, hard, baseKey, max)
|
221
|
+
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
|
222
222
|
local jobs = getZSetItems(keyName, max)
|
223
|
+
-- filter out jobs to ignore
|
224
|
+
if jobsToIgnore then
|
225
|
+
local filteredJobs = {}
|
226
|
+
for i = 1, #jobs do
|
227
|
+
if not jobsToIgnore[jobs[i]] then
|
228
|
+
table.insert(filteredJobs, jobs[i])
|
229
|
+
end
|
230
|
+
end
|
231
|
+
jobs = filteredJobs
|
232
|
+
end
|
223
233
|
local count = removeJobs(jobs, hard, baseKey, max)
|
224
234
|
if(#jobs > 0) then
|
225
235
|
for from, to in batches(#jobs, 7000) do
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"obliterate-2.js","sourceRoot":"","sources":["../../../src/scripts/obliterate-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"obliterate-2.js","sourceRoot":"","sources":["../../../src/scripts/obliterate-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Tf,CAAC;AACW,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,YAAY;IAClB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -228,20 +228,20 @@ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debou
|
|
228
228
|
end
|
229
229
|
return false
|
230
230
|
end
|
231
|
-
local function removeJob(
|
231
|
+
local function removeJob(prefix, jobId, parentKey, removeChildren)
|
232
232
|
local jobKey = prefix .. jobId;
|
233
233
|
removeParentDependencyKey(jobKey, false, parentKey, nil)
|
234
234
|
if removeChildren == "1" then
|
235
235
|
-- Check if this job has children
|
236
236
|
-- If so, we are going to try to remove the children recursively in deep first way because
|
237
237
|
-- if some job is locked we must exit with and error.
|
238
|
-
--local countProcessed = rcall("HLEN", jobKey .. ":processed")
|
238
|
+
-- local countProcessed = rcall("HLEN", jobKey .. ":processed")
|
239
239
|
local processed = rcall("HGETALL", jobKey .. ":processed")
|
240
240
|
if (#processed > 0) then
|
241
241
|
for i = 1, #processed, 2 do
|
242
242
|
local childJobId = getJobIdFromKey(processed[i])
|
243
243
|
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
|
244
|
-
removeJob(
|
244
|
+
removeJob(childJobPrefix, childJobId, jobKey, removeChildren)
|
245
245
|
end
|
246
246
|
end
|
247
247
|
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
|
@@ -250,7 +250,7 @@ local function removeJob( prefix, jobId, parentKey, removeChildren)
|
|
250
250
|
-- We need to get the jobId for this job.
|
251
251
|
local childJobId = getJobIdFromKey(childJobKey)
|
252
252
|
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
|
253
|
-
removeJob(
|
253
|
+
removeJob(childJobPrefix, childJobId, jobKey, removeChildren)
|
254
254
|
end
|
255
255
|
end
|
256
256
|
local failed = rcall("HGETALL", jobKey .. ":failed")
|
@@ -258,7 +258,7 @@ local function removeJob( prefix, jobId, parentKey, removeChildren)
|
|
258
258
|
for i = 1, #failed, 2 do
|
259
259
|
local childJobId = getJobIdFromKey(failed[i])
|
260
260
|
local childJobPrefix = getJobKeyPrefix(failed[i], childJobId)
|
261
|
-
removeJob(
|
261
|
+
removeJob(childJobPrefix, childJobId, jobKey, removeChildren)
|
262
262
|
end
|
263
263
|
end
|
264
264
|
end
|
@@ -266,13 +266,20 @@ local function removeJob( prefix, jobId, parentKey, removeChildren)
|
|
266
266
|
removeDebounceKey(prefix, jobKey)
|
267
267
|
if removeJobKeys(jobKey) > 0 then
|
268
268
|
local maxEvents = getOrSetMaxEvents(KEYS[2])
|
269
|
-
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed",
|
270
|
-
|
269
|
+
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed", "jobId", jobId, "prev",
|
270
|
+
prev)
|
271
271
|
end
|
272
272
|
end
|
273
273
|
local prefix = KEYS[1]
|
274
|
-
|
275
|
-
|
274
|
+
local jobId = ARGV[1]
|
275
|
+
local shouldRemoveChildren = ARGV[2]
|
276
|
+
local jobKey = prefix .. jobId
|
277
|
+
-- Check if the job belongs to a job scheduler and it is in delayed state.
|
278
|
+
if rcall("ZSCORE", prefix .. "delayed", jobId) and rcall("HGET", jobKey, "rjk") then
|
279
|
+
return -8 -- Return error code as the job is part of a job scheduler and is in delayed state.
|
280
|
+
end
|
281
|
+
if not isLocked(prefix, jobId, shouldRemoveChildren) then
|
282
|
+
removeJob(prefix, jobId, nil, shouldRemoveChildren)
|
276
283
|
return 1
|
277
284
|
end
|
278
285
|
return 0
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"removeJob-2.js","sourceRoot":"","sources":["../../../src/scripts/removeJob-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"removeJob-2.js","sourceRoot":"","sources":["../../../src/scripts/removeJob-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Rf,CAAC;AACW,QAAA,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW;IACjB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.removeJobScheduler = void 0;
|
4
|
+
const content = `--[[
|
5
|
+
Removes a repeatable job
|
6
|
+
Input:
|
7
|
+
KEYS[1] job schedulers key
|
8
|
+
KEYS[2] delayed jobs key
|
9
|
+
KEYS[3] events key
|
10
|
+
ARGV[1] job scheduler id
|
11
|
+
ARGV[2] prefix key
|
12
|
+
Output:
|
13
|
+
0 - OK
|
14
|
+
1 - Missing repeat job
|
15
|
+
Events:
|
16
|
+
'removed'
|
17
|
+
]]
|
18
|
+
local rcall = redis.call
|
19
|
+
-- Includes
|
20
|
+
--[[
|
21
|
+
Function to remove job keys.
|
22
|
+
]]
|
23
|
+
local function removeJobKeys(jobKey)
|
24
|
+
return rcall("DEL", jobKey, jobKey .. ':logs',
|
25
|
+
jobKey .. ':dependencies', jobKey .. ':processed', jobKey .. ':failed')
|
26
|
+
end
|
27
|
+
local jobSchedulerId = ARGV[1]
|
28
|
+
local prefix = ARGV[2]
|
29
|
+
local millis = rcall("ZSCORE", KEYS[1], jobSchedulerId)
|
30
|
+
if millis then
|
31
|
+
-- Delete next programmed job.
|
32
|
+
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. millis
|
33
|
+
if(rcall("ZREM", KEYS[2], delayedJobId) == 1) then
|
34
|
+
removeJobKeys(prefix .. delayedJobId)
|
35
|
+
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", delayedJobId, "prev", "delayed")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
if(rcall("ZREM", KEYS[1], jobSchedulerId) == 1) then
|
39
|
+
rcall("DEL", KEYS[1] .. ":" .. jobSchedulerId)
|
40
|
+
return 0
|
41
|
+
end
|
42
|
+
return 1
|
43
|
+
`;
|
44
|
+
exports.removeJobScheduler = {
|
45
|
+
name: 'removeJobScheduler',
|
46
|
+
content,
|
47
|
+
keys: 3,
|
48
|
+
};
|
49
|
+
//# sourceMappingURL=removeJobScheduler-3.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"removeJobScheduler-3.js","sourceRoot":"","sources":["../../../src/scripts/removeJobScheduler-3.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCf,CAAC;AACW,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,oBAAoB;IAC1B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|