bullmq 2.3.1 → 2.3.2

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.
Files changed (109) hide show
  1. package/dist/cjs/classes/redis-connection.js +1 -1
  2. package/dist/cjs/classes/redis-connection.js.map +1 -1
  3. package/dist/cjs/commands/addJob-8.lua +174 -0
  4. package/dist/cjs/commands/changeDelay-4.lua +43 -0
  5. package/dist/cjs/commands/cleanJobsInSet-2.lua +46 -0
  6. package/dist/cjs/commands/drain-4.lua +25 -0
  7. package/dist/cjs/commands/extendLock-2.lua +23 -0
  8. package/dist/cjs/commands/getState-7.lua +57 -0
  9. package/dist/cjs/commands/getStateV2-7.lua +51 -0
  10. package/dist/cjs/commands/includes/addJobWithPriority.lua +16 -0
  11. package/dist/cjs/commands/includes/batches.lua +18 -0
  12. package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
  13. package/dist/cjs/commands/includes/checkStalledJobs.lua +137 -0
  14. package/dist/cjs/commands/includes/cleanList.lua +50 -0
  15. package/dist/cjs/commands/includes/cleanSet.lua +50 -0
  16. package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
  17. package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
  18. package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
  19. package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
  20. package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
  21. package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
  22. package/dist/cjs/commands/includes/isLocked.lua +31 -0
  23. package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +84 -0
  24. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  25. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +49 -0
  26. package/dist/cjs/commands/includes/removeJob.lua +13 -0
  27. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +26 -0
  28. package/dist/cjs/commands/includes/removeJobs.lua +38 -0
  29. package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
  30. package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
  31. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +81 -0
  32. package/dist/cjs/commands/includes/trimEvents.lua +12 -0
  33. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +28 -0
  34. package/dist/cjs/commands/isFinished-3.lua +48 -0
  35. package/dist/cjs/commands/isJobInList-1.lua +16 -0
  36. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
  37. package/dist/cjs/commands/moveToActive-9.lua +67 -0
  38. package/dist/cjs/commands/moveToDelayed-5.lua +54 -0
  39. package/dist/cjs/commands/moveToFinished-12.lua +201 -0
  40. package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
  41. package/dist/cjs/commands/obliterate-2.lua +94 -0
  42. package/dist/cjs/commands/pause-4.lua +27 -0
  43. package/dist/cjs/commands/promote-6.lua +59 -0
  44. package/dist/cjs/commands/releaseLock-1.lua +19 -0
  45. package/dist/cjs/commands/removeJob-1.lua +72 -0
  46. package/dist/cjs/commands/removeRepeatable-2.lua +32 -0
  47. package/dist/cjs/commands/reprocessJob-4.lua +35 -0
  48. package/dist/cjs/commands/retryJob-6.lua +51 -0
  49. package/dist/cjs/commands/retryJobs-6.lua +53 -0
  50. package/dist/cjs/commands/takeLock-1.lua +17 -0
  51. package/dist/cjs/commands/updateData-1.lua +16 -0
  52. package/dist/cjs/commands/updateProgress-2.lua +22 -0
  53. package/dist/cjs/scripts/moveToFinished-12.js +5 -2
  54. package/dist/cjs/scripts/moveToFinished-12.js.map +1 -1
  55. package/dist/esm/classes/redis-connection.js +1 -1
  56. package/dist/esm/classes/redis-connection.js.map +1 -1
  57. package/dist/esm/commands/addJob-8.lua +174 -0
  58. package/dist/esm/commands/changeDelay-4.lua +43 -0
  59. package/dist/esm/commands/cleanJobsInSet-2.lua +46 -0
  60. package/dist/esm/commands/drain-4.lua +25 -0
  61. package/dist/esm/commands/extendLock-2.lua +23 -0
  62. package/dist/esm/commands/getState-7.lua +57 -0
  63. package/dist/esm/commands/getStateV2-7.lua +51 -0
  64. package/dist/esm/commands/includes/addJobWithPriority.lua +16 -0
  65. package/dist/esm/commands/includes/batches.lua +18 -0
  66. package/dist/esm/commands/includes/checkItemInList.lua +12 -0
  67. package/dist/esm/commands/includes/checkStalledJobs.lua +137 -0
  68. package/dist/esm/commands/includes/cleanList.lua +50 -0
  69. package/dist/esm/commands/includes/cleanSet.lua +50 -0
  70. package/dist/esm/commands/includes/collectMetrics.lua +46 -0
  71. package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
  72. package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
  73. package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
  74. package/dist/esm/commands/includes/getTimestamp.lua +19 -0
  75. package/dist/esm/commands/includes/getZSetItems.lua +7 -0
  76. package/dist/esm/commands/includes/isLocked.lua +31 -0
  77. package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +84 -0
  78. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  79. package/dist/esm/commands/includes/promoteDelayedJobs.lua +49 -0
  80. package/dist/esm/commands/includes/removeJob.lua +13 -0
  81. package/dist/esm/commands/includes/removeJobFromAnyState.lua +26 -0
  82. package/dist/esm/commands/includes/removeJobs.lua +38 -0
  83. package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
  84. package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
  85. package/dist/esm/commands/includes/removeParentDependencyKey.lua +81 -0
  86. package/dist/esm/commands/includes/trimEvents.lua +12 -0
  87. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +28 -0
  88. package/dist/esm/commands/isFinished-3.lua +48 -0
  89. package/dist/esm/commands/isJobInList-1.lua +16 -0
  90. package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
  91. package/dist/esm/commands/moveToActive-9.lua +67 -0
  92. package/dist/esm/commands/moveToDelayed-5.lua +54 -0
  93. package/dist/esm/commands/moveToFinished-12.lua +201 -0
  94. package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
  95. package/dist/esm/commands/obliterate-2.lua +94 -0
  96. package/dist/esm/commands/pause-4.lua +27 -0
  97. package/dist/esm/commands/promote-6.lua +59 -0
  98. package/dist/esm/commands/releaseLock-1.lua +19 -0
  99. package/dist/esm/commands/removeJob-1.lua +72 -0
  100. package/dist/esm/commands/removeRepeatable-2.lua +32 -0
  101. package/dist/esm/commands/reprocessJob-4.lua +35 -0
  102. package/dist/esm/commands/retryJob-6.lua +51 -0
  103. package/dist/esm/commands/retryJobs-6.lua +53 -0
  104. package/dist/esm/commands/takeLock-1.lua +17 -0
  105. package/dist/esm/commands/updateData-1.lua +16 -0
  106. package/dist/esm/commands/updateProgress-2.lua +22 -0
  107. package/dist/esm/scripts/moveToFinished-12.js +5 -2
  108. package/dist/esm/scripts/moveToFinished-12.js.map +1 -1
  109. package/package.json +2 -2
@@ -0,0 +1,72 @@
1
+ --[[
2
+ Remove a job from all the queues it may be in as well as all its data.
3
+ In order to be able to remove a job, it cannot be active.
4
+
5
+ Input:
6
+ KEYS[1] queue prefix
7
+ ARGV[1] jobId
8
+
9
+ Events:
10
+ 'removed'
11
+ ]]
12
+
13
+ local rcall = redis.call
14
+
15
+ -- Includes
16
+ --- @include "includes/destructureJobKey"
17
+ --- @include "includes/isLocked"
18
+ --- @include "includes/removeJobFromAnyState"
19
+ --- @include "includes/removeParentDependencyKey"
20
+
21
+ local function removeJob( prefix, jobId, parentKey)
22
+ local jobKey = prefix .. jobId;
23
+
24
+ removeParentDependencyKey(jobKey, false, parentKey)
25
+
26
+ -- Check if this job has children
27
+ -- If so, we are going to try to remove the children recursively in deep first way because
28
+ -- if some job is locked we must exit with and error.
29
+ --local countProcessed = rcall("HLEN", jobKey .. ":processed")
30
+ local processed = rcall("HGETALL", jobKey .. ":processed")
31
+
32
+ if (#processed > 0) then
33
+ for i = 1, #processed, 2 do
34
+ local childJobId = getJobIdFromKey(processed[i])
35
+ local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
36
+ removeJob( childJobPrefix, childJobId, jobKey )
37
+ end
38
+ end
39
+
40
+ local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
41
+ if (#dependencies > 0) then
42
+ for i, childJobKey in ipairs(dependencies) do
43
+ -- We need to get the jobId for this job.
44
+ local childJobId = getJobIdFromKey(childJobKey)
45
+ local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
46
+ removeJob( childJobPrefix, childJobId, jobKey )
47
+ end
48
+ end
49
+
50
+ local prev = removeJobFromAnyState(prefix, jobId)
51
+
52
+ rcall("ZREM", prefix .. "priority", jobId)
53
+ rcall("DEL", jobKey, jobKey .. ":logs", jobKey .. ":dependencies", jobKey .. ":processed")
54
+
55
+ -- -- delete keys related to rate limiter
56
+ -- local limiterIndexTable = KEYS[10] .. ":index"
57
+ -- local limitedSetKey = rcall("HGET", limiterIndexTable, jobId)
58
+ -- if limitedSetKey then
59
+ -- rcall("SREM", limitedSetKey, jobId)
60
+ -- rcall("HDEL", limiterIndexTable, jobId)
61
+ -- end
62
+
63
+ rcall("XADD", prefix .. "events", "*", "event", "removed", "jobId", jobId, "prev", prev);
64
+ end
65
+
66
+ local prefix = KEYS[1]
67
+
68
+ if not isLocked(prefix, ARGV[1]) then
69
+ removeJob(prefix, ARGV[1])
70
+ return 1
71
+ end
72
+ return 0
@@ -0,0 +1,32 @@
1
+
2
+ --[[
3
+ Removes a repeatable job
4
+ Input:
5
+ KEYS[1] repeat jobs key
6
+ KEYS[2] delayed jobs key
7
+
8
+ ARGV[1] repeat job id
9
+ ARGV[2] repeat job key
10
+ ARGV[3] queue key
11
+
12
+ Output:
13
+ 0 - OK
14
+ 1 - Missing repeat job
15
+ ]]
16
+ local rcall = redis.call
17
+ local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
18
+
19
+ if(millis) then
20
+ -- Delete next programmed job.
21
+ local repeatJobId = ARGV[1] .. millis
22
+ if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
23
+ rcall("DEL", ARGV[3] .. repeatJobId)
24
+ rcall("XADD", ARGV[3] .. "events", "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
25
+ end
26
+ end
27
+
28
+ if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
29
+ return 0
30
+ end
31
+
32
+ return 1
@@ -0,0 +1,35 @@
1
+ --[[
2
+ Attempts to reprocess a job
3
+
4
+ Input:
5
+ KEYS[1] job key
6
+ KEYS[2] events stream
7
+ KEYS[3] job state
8
+ KEYS[4] wait key
9
+
10
+ ARGV[1] job.id
11
+ ARGV[2] (job.opts.lifo ? 'R' : 'L') + 'PUSH'
12
+ ARGV[3] propVal - failedReason/returnvalue
13
+ ARGV[4] prev state - failed/completed
14
+
15
+ Output:
16
+ 1 means the operation was a success
17
+ -1 means the job does not exist
18
+ -3 means the job was not found in the expected set.
19
+ ]]
20
+ local rcall = redis.call;
21
+ if (rcall("EXISTS", KEYS[1]) == 1) then
22
+ local jobId = ARGV[1]
23
+ if (rcall("ZREM", KEYS[3], jobId) == 1) then
24
+ rcall(ARGV[2], KEYS[4], jobId)
25
+ rcall("HDEL", KEYS[1], "finishedOn", "processedOn", ARGV[3])
26
+
27
+ -- Emit waiting event
28
+ rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", jobId, "prev", ARGV[4]);
29
+ return 1
30
+ else
31
+ return -3
32
+ end
33
+ else
34
+ return -1
35
+ end
@@ -0,0 +1,51 @@
1
+ --[[
2
+ Retries a failed job by moving it back to the wait queue.
3
+
4
+ Input:
5
+ KEYS[1] 'active',
6
+ KEYS[2] 'wait'
7
+ KEYS[3] 'paused'
8
+ KEYS[4] job key
9
+ KEYS[5] 'meta'
10
+ KEYS[6] events stream
11
+
12
+ ARGV[1] pushCmd
13
+ ARGV[2] jobId
14
+ ARGV[3] token
15
+
16
+ Events:
17
+ 'waiting'
18
+
19
+ Output:
20
+ 0 - OK
21
+ -1 - Missing key
22
+ -2 - Missing lock
23
+ ]]
24
+ local rcall = redis.call
25
+
26
+ -- Includes
27
+ --- @include "includes/getTargetQueueList"
28
+
29
+ if rcall("EXISTS", KEYS[4]) == 1 then
30
+
31
+ if ARGV[3] ~= "0" then
32
+ local lockKey = KEYS[4] .. ':lock'
33
+ if rcall("GET", lockKey) == ARGV[3] then
34
+ rcall("DEL", lockKey)
35
+ else
36
+ return -2
37
+ end
38
+ end
39
+
40
+ local target = getTargetQueueList(KEYS[5], KEYS[2], KEYS[3])
41
+
42
+ rcall("LREM", KEYS[1], 0, ARGV[2])
43
+ rcall(ARGV[1], target, ARGV[2])
44
+
45
+ -- Emit waiting event
46
+ rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", ARGV[2], "prev", "failed");
47
+
48
+ return 0
49
+ else
50
+ return -1
51
+ end
@@ -0,0 +1,53 @@
1
+ --[[
2
+ Attempts to retry all failed jobs
3
+
4
+ Input:
5
+ KEYS[1] base key
6
+ KEYS[2] events stream
7
+ KEYS[3] state key (failed, completed)
8
+ KEYS[4] 'wait'
9
+ KEYS[5] 'paused'
10
+ KEYS[6] 'meta'
11
+
12
+ ARGV[1] count
13
+ ARGV[2] timestamp
14
+ ARGV[3] prev state
15
+
16
+ Output:
17
+ 1 means the operation is not completed
18
+ 0 means the operation is completed
19
+ ]]
20
+ local maxCount = tonumber(ARGV[1])
21
+ local timestamp = tonumber(ARGV[2])
22
+
23
+ local rcall = redis.call;
24
+
25
+ -- Includes
26
+ --- @include "includes/batches"
27
+ --- @include "includes/getTargetQueueList"
28
+
29
+ local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
30
+
31
+ local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
32
+ if (#jobs > 0) then
33
+ for i, key in ipairs(jobs) do
34
+ local jobKey = KEYS[1] .. key
35
+ rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason", "returnvalue")
36
+
37
+ -- Emit waiting event
38
+ rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key, "prev", ARGV[3]);
39
+ end
40
+
41
+ for from, to in batches(#jobs, 7000) do
42
+ rcall("ZREM", KEYS[3], unpack(jobs, from, to))
43
+ rcall("LPUSH", target, unpack(jobs, from, to))
44
+ end
45
+ end
46
+
47
+ maxCount = maxCount - #jobs
48
+
49
+ if(maxCount <= 0) then
50
+ return 1
51
+ end
52
+
53
+ return 0
@@ -0,0 +1,17 @@
1
+ --[[
2
+ Takes a lock
3
+
4
+ Input:
5
+ KEYS[1] 'lock',
6
+
7
+ ARGV[1] token
8
+ ARGV[2] lock duration in milliseconds
9
+
10
+ Output:
11
+ "OK" if lock extented succesfully.
12
+ ]]
13
+ if redis.call("SET", KEYS[1], ARGV[1], "NX", "PX", ARGV[2]) then
14
+ return 1
15
+ else
16
+ return 0
17
+ end
@@ -0,0 +1,16 @@
1
+ --[[
2
+ Update job data
3
+
4
+ Input:
5
+ KEYS[1] Job id key
6
+
7
+ ARGV[1] data
8
+ ]]
9
+ local rcall = redis.call
10
+
11
+ if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
12
+ rcall("HSET", KEYS[1], "data", ARGV[1])
13
+ return 0
14
+ else
15
+ return -1
16
+ end
@@ -0,0 +1,22 @@
1
+ --[[
2
+ Update job progress
3
+
4
+ Input:
5
+ KEYS[1] Job id key
6
+ KEYS[2] event stream key
7
+
8
+ ARGV[1] id
9
+ ARGV[2] progress
10
+
11
+ Event:
12
+ progress(jobId, progress)
13
+ ]]
14
+ local rcall = redis.call
15
+
16
+ if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
17
+ rcall("HSET", KEYS[1], "progress", ARGV[2])
18
+ rcall("XADD", KEYS[2], "*", "event", "progress", "jobId", ARGV[1], "data", ARGV[2]);
19
+ return 0
20
+ else
21
+ return -1
22
+ end
@@ -187,10 +187,13 @@ end
187
187
  --[[
188
188
  Function to recursively move from waitingChildren to failed.
189
189
  ]]
190
- local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobId, timestamp)
190
+ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
191
191
  if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
192
192
  rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
193
- rcall("HMSET", parentKey, "failedReason", "child " .. jobId .. " failed", "finishedOn", timestamp)
193
+ local failedReason = "child " .. jobIdKey .. " failed"
194
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
195
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
196
+ failedReason, "prev", "waiting-children")
194
197
  local rawParentData = rcall("HGET", parentKey, "parent")
195
198
  if rawParentData ~= false then
196
199
  local parentData = cjson.decode(rawParentData)
@@ -1 +1 @@
1
- {"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
1
+ {"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmhBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -128,7 +128,7 @@ export class RedisConnection extends EventEmitter {
128
128
  throw new Error(`Redis version needs to be greater than ${RedisConnection.minimumVersion} Current: ${this.version}`);
129
129
  }
130
130
  if (isRedisVersionLowerThan(this.version, RedisConnection.recommendedMinimumVersion)) {
131
- console.warn(`It is highly recommeded to use a minimum Redis version of ${RedisConnection.recommendedMinimumVersion}
131
+ console.warn(`It is highly recommended to use a minimum Redis version of ${RedisConnection.recommendedMinimumVersion}
132
132
  Current: ${this.version}`);
133
133
  }
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ --[[
2
+ Adds a job to the queue by doing the following:
3
+ - Increases the job counter if needed.
4
+ - Creates a new job key with the job data.
5
+
6
+ - if delayed:
7
+ - computes timestamp.
8
+ - adds to delayed zset.
9
+ - Emits a global event 'delayed' if the job is delayed.
10
+ - if not delayed
11
+ - Adds the jobId to the wait/paused list in one of three ways:
12
+ - LIFO
13
+ - FIFO
14
+ - prioritized.
15
+ - Adds the job to the "added" list so that workers gets notified.
16
+
17
+ Input:
18
+ KEYS[1] 'wait',
19
+ KEYS[2] 'paused'
20
+ KEYS[3] 'meta'
21
+ KEYS[4] 'id'
22
+ KEYS[5] 'delayed'
23
+ KEYS[6] 'priority'
24
+ KEYS[7] 'completed'
25
+ KEYS[8] events stream key
26
+
27
+ ARGV[1] msgpacked arguments array
28
+ [1] key prefix,
29
+ [2] custom id (will not generate one automatically)
30
+ [3] name
31
+ [4] timestamp
32
+ [5] parentKey?
33
+ [6] waitChildrenKey key.
34
+ [7] parent dependencies key.
35
+ [8] parent? {id, queueKey}
36
+ [9] repeat job key
37
+
38
+ ARGV[2] Json stringified job data
39
+ ARGV[3] msgpacked options
40
+
41
+ Output:
42
+ jobId - OK
43
+ -5 - Missing parent key
44
+ ]]
45
+ local jobId
46
+ local jobIdKey
47
+ local rcall = redis.call
48
+
49
+ local args = cmsgpack.unpack(ARGV[1])
50
+
51
+ local data = ARGV[2]
52
+ local opts = cmsgpack.unpack(ARGV[3])
53
+
54
+ local parentKey = args[5]
55
+ local repeatJobKey = args[9]
56
+ local parent = args[8]
57
+ local parentData
58
+
59
+ -- Includes
60
+ --- @include "includes/addJobWithPriority"
61
+ --- @include "includes/getTargetQueueList"
62
+ --- @include "includes/trimEvents"
63
+ --- @include "includes/getNextDelayedTimestamp"
64
+
65
+ if parentKey ~= nil then
66
+ if rcall("EXISTS", parentKey) ~= 1 then
67
+ return -5
68
+ end
69
+
70
+ parentData = cjson.encode(parent)
71
+ end
72
+
73
+ local jobCounter = rcall("INCR", KEYS[4])
74
+
75
+ -- Includes
76
+ --- @include "includes/updateParentDepsIfNeeded"
77
+
78
+ -- Trim events before emiting them to avoid trimming events emitted in this script
79
+ trimEvents(KEYS[3], KEYS[8])
80
+
81
+ local parentDependenciesKey = args[7]
82
+ if args[2] == "" then
83
+ jobId = jobCounter
84
+ jobIdKey = args[1] .. jobId
85
+ else
86
+ jobId = args[2]
87
+ jobIdKey = args[1] .. jobId
88
+ if rcall("EXISTS", jobIdKey) == 1 then
89
+ if parentKey ~= nil then
90
+ if rcall("ZSCORE", KEYS[7], jobId) ~= false then
91
+ local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
92
+ updateParentDepsIfNeeded(parentKey, parent['queueKey'], parentDependenciesKey,
93
+ parent['id'], jobIdKey, returnvalue)
94
+ else
95
+ if parentDependenciesKey ~= nil then
96
+ rcall("SADD", parentDependenciesKey, jobIdKey)
97
+ end
98
+ end
99
+ rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
100
+ end
101
+ return jobId .. "" -- convert to string
102
+ end
103
+ end
104
+
105
+ -- Store the job.
106
+ local jsonOpts = cjson.encode(opts)
107
+ local delay = opts['delay'] or 0
108
+ local priority = opts['priority'] or 0
109
+ local timestamp = args[4]
110
+
111
+ local optionalValues = {}
112
+ if parentKey ~= nil then
113
+ table.insert(optionalValues, "parentKey")
114
+ table.insert(optionalValues, parentKey)
115
+ table.insert(optionalValues, "parent")
116
+ table.insert(optionalValues, parentData)
117
+ end
118
+
119
+ if repeatJobKey ~= nil then
120
+ table.insert(optionalValues, "rjk")
121
+ table.insert(optionalValues, repeatJobKey)
122
+ end
123
+
124
+ rcall("HMSET", jobIdKey, "name", args[3], "data", ARGV[2], "opts", jsonOpts,
125
+ "timestamp", timestamp, "delay", delay, "priority", priority, unpack(optionalValues))
126
+
127
+ rcall("XADD", KEYS[8], "*", "event", "added", "jobId", jobId, "name", args[3])
128
+
129
+ -- Check if job is delayed
130
+ local delayedTimestamp = (delay > 0 and (timestamp + delay)) or 0
131
+
132
+ -- Check if job is a parent, if so add to the parents set
133
+ local waitChildrenKey = args[6]
134
+ if waitChildrenKey ~= nil then
135
+ rcall("ZADD", waitChildrenKey, timestamp, jobId)
136
+ rcall("XADD", KEYS[8], "*", "event", "waiting-children", "jobId", jobId)
137
+ elseif (delayedTimestamp ~= 0) then
138
+ local timestamp = delayedTimestamp * 0x1000 + bit.band(jobCounter, 0xfff)
139
+ rcall("ZADD", KEYS[5], timestamp, jobId)
140
+ rcall("XADD", KEYS[8], "*", "event", "delayed", "jobId", jobId, "delay",
141
+ delayedTimestamp)
142
+ -- If wait list is empty, and this delayed job is the next one to be processed,
143
+ -- then we need to signal the workers by adding a dummy job (jobId 0) to the wait list.
144
+ local target = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
145
+ if rcall("LLEN", target) == 0 then
146
+ local nextTimestamp = getNextDelayedTimestamp(KEYS[5])
147
+ if delayedTimestamp < nextTimestamp then
148
+ rcall("LPUSH", target, 0)
149
+ end
150
+ end
151
+ else
152
+ local target = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
153
+
154
+ -- Standard or priority add
155
+ if priority == 0 then
156
+ -- LIFO or FIFO
157
+ local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH';
158
+ rcall(pushCmd, target, jobId)
159
+ else
160
+ -- Priority add
161
+ addJobWithPriority(KEYS[6], priority, target, jobId)
162
+ end
163
+ -- Emit waiting event
164
+ rcall("XADD", KEYS[8], "*", "event", "waiting", "jobId", jobId)
165
+ end
166
+
167
+ -- Check if this job is a child of another job, if so add it to the parents dependencies
168
+ -- TODO: Should not be possible to add a child job to a parent that is not in the "waiting-children" status.
169
+ -- fail in this case.
170
+ if parentDependenciesKey ~= nil then
171
+ rcall("SADD", parentDependenciesKey, jobIdKey)
172
+ end
173
+
174
+ return jobId .. "" -- convert to string
@@ -0,0 +1,43 @@
1
+ --[[
2
+ Change job delay when it is in delayed set.
3
+ Input:
4
+ KEYS[1] delayed key
5
+ KEYS[2] job key
6
+ KEYS[3] events stream
7
+ KEYS[4] delayed stream
8
+
9
+ ARGV[1] delay
10
+ ARGV[2] delayedTimestamp
11
+ ARGV[3] the id of the job
12
+ Output:
13
+ 0 - OK
14
+ -1 - Missing job.
15
+ -3 - Job not in delayed set.
16
+
17
+ Events:
18
+ - delayed key.
19
+ ]]
20
+ local rcall = redis.call
21
+
22
+ if rcall("EXISTS", KEYS[2]) == 1 then
23
+
24
+ local jobId = ARGV[3]
25
+ local score = tonumber(ARGV[2])
26
+ local delayedTimestamp = (score / 0x1000)
27
+
28
+ local numRemovedElements = rcall("ZREM", KEYS[1], jobId)
29
+
30
+ if (numRemovedElements < 1) then
31
+ return -3
32
+ end
33
+
34
+ rcall("HSET", KEYS[2], "delay", tonumber(ARGV[1]))
35
+ rcall("ZADD", KEYS[1], score, jobId)
36
+
37
+ rcall("XADD", KEYS[3], "*", "event", "delayed", "jobId", jobId, "delay", delayedTimestamp);
38
+ rcall("XADD", KEYS[4], "*", "nextTimestamp", delayedTimestamp);
39
+
40
+ return 0
41
+ else
42
+ return -1
43
+ end
@@ -0,0 +1,46 @@
1
+ --[[
2
+ Remove jobs from the specific set.
3
+
4
+ Input:
5
+ KEYS[1] set key,
6
+ KEYS[2] events stream key
7
+
8
+ ARGV[1] jobKey prefix
9
+ ARGV[2] timestamp
10
+ ARGV[3] limit the number of jobs to be removed. 0 is unlimited
11
+ ARGV[4] set name, can be any of 'wait', 'active', 'paused', 'delayed', 'completed', or 'failed'
12
+ ]]
13
+ local rcall = redis.call
14
+ local rangeStart = 0
15
+ local rangeEnd = -1
16
+
17
+ local limit = tonumber(ARGV[3])
18
+
19
+ -- If we're only deleting _n_ items, avoid retrieving all items
20
+ -- for faster performance
21
+ --
22
+ -- Start from the tail of the list, since that's where oldest elements
23
+ -- are generally added for FIFO lists
24
+ if limit > 0 then
25
+ rangeStart = -1 - limit + 1
26
+ rangeEnd = -1
27
+ end
28
+
29
+ -- Includes
30
+ --- @include "includes/cleanList"
31
+ --- @include "includes/cleanSet"
32
+
33
+ local result
34
+ if ARGV[4] == "active" then
35
+ result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false)
36
+ elseif ARGV[4] == "delayed" then
37
+ result = cleanSet(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], limit, {"processedOn", "timestamp"})
38
+ elseif ARGV[4] == "wait" or ARGV[4] == "paused" then
39
+ result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true)
40
+ else
41
+ result = cleanSet(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], limit, {"finishedOn"} )
42
+ end
43
+
44
+ rcall("XADD", KEYS[2], "*", "event", "cleaned", "count", result[2])
45
+
46
+ return result[1]
@@ -0,0 +1,25 @@
1
+ --[[
2
+ Drains the queue, removes all jobs that are waiting
3
+ or delayed, but not active, completed or failed
4
+
5
+ Input:
6
+ KEYS[1] 'wait',
7
+ KEYS[2] 'paused'
8
+ KEYS[3] 'delayed'
9
+ KEYS[4] 'priority'
10
+
11
+ ARGV[1] queue key prefix
12
+ ]]
13
+ local rcall = redis.call
14
+ local queueBaseKey = ARGV[1]
15
+
16
+ --- @include "includes/removeJobs"
17
+
18
+ removeListJobs(KEYS[1], true, queueBaseKey, 0) --wait
19
+ removeListJobs(KEYS[2], true, queueBaseKey, 0) --paused
20
+
21
+ if KEYS[3] ~= "" then
22
+ removeZSetJobs(KEYS[3], true, queueBaseKey, 0) --delayed
23
+ end
24
+
25
+ rcall("DEL", KEYS[4])