bullmq 4.17.0 → 5.0.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.
Files changed (192) hide show
  1. package/dist/cjs/classes/flow-producer.js +3 -10
  2. package/dist/cjs/classes/flow-producer.js.map +1 -1
  3. package/dist/cjs/classes/job.js +21 -11
  4. package/dist/cjs/classes/job.js.map +1 -1
  5. package/dist/cjs/classes/queue-base.js +2 -9
  6. package/dist/cjs/classes/queue-base.js.map +1 -1
  7. package/dist/cjs/classes/queue-events.js +3 -1
  8. package/dist/cjs/classes/queue-events.js.map +1 -1
  9. package/dist/cjs/classes/queue-keys.js +1 -0
  10. package/dist/cjs/classes/queue-keys.js.map +1 -1
  11. package/dist/cjs/classes/redis-connection.js +9 -7
  12. package/dist/cjs/classes/redis-connection.js.map +1 -1
  13. package/dist/cjs/classes/scripts.js +34 -34
  14. package/dist/cjs/classes/scripts.js.map +1 -1
  15. package/dist/cjs/classes/worker.js +27 -32
  16. package/dist/cjs/classes/worker.js.map +1 -1
  17. package/dist/cjs/commands/{addDelayedJob-7.lua → addDelayedJob-6.lua} +18 -22
  18. package/dist/cjs/commands/addParentJob-4.lua +0 -2
  19. package/dist/{esm/commands/addPrioritizedJob-8.lua → cjs/commands/addPrioritizedJob-7.lua} +18 -24
  20. package/dist/cjs/commands/{addStandardJob-6.lua → addStandardJob-7.lua} +6 -2
  21. package/dist/cjs/commands/changePriority-6.lua +57 -0
  22. package/dist/cjs/commands/getCounts-1.lua +1 -0
  23. package/dist/cjs/commands/getRanges-1.lua +1 -0
  24. package/dist/cjs/commands/includes/addDelayMarkerIfNeeded.lua +5 -19
  25. package/dist/cjs/commands/includes/addJobWithPriority.lua +3 -7
  26. package/dist/cjs/commands/includes/checkStalledJobs.lua +1 -1
  27. package/dist/cjs/commands/includes/isQueuePaused.lua +7 -0
  28. package/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +39 -30
  29. package/dist/cjs/commands/includes/prepareJobForProcessing.lua +1 -1
  30. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +7 -4
  31. package/dist/{esm/commands/moveToActive-10.lua → cjs/commands/moveToActive-11.lua} +18 -29
  32. package/dist/cjs/commands/moveToDelayed-7.lua +77 -0
  33. package/dist/cjs/commands/{moveToFinished-13.lua → moveToFinished-14.lua} +29 -22
  34. package/dist/cjs/commands/moveToWaitingChildren-4.lua +7 -4
  35. package/dist/cjs/commands/pause-7.lua +41 -0
  36. package/dist/cjs/commands/promote-8.lua +60 -0
  37. package/dist/cjs/commands/{retryJob-9.lua → retryJob-10.lua} +16 -11
  38. package/dist/cjs/scripts/{addDelayedJob-7.js → addDelayedJob-6.js} +77 -88
  39. package/dist/cjs/scripts/{moveToActive-10.js.map → addDelayedJob-6.js.map} +1 -1
  40. package/dist/cjs/scripts/addParentJob-4.js +51 -61
  41. package/dist/cjs/scripts/addParentJob-4.js.map +1 -1
  42. package/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-7.js} +80 -93
  43. package/dist/cjs/scripts/addPrioritizedJob-7.js.map +1 -0
  44. package/dist/cjs/scripts/{addStandardJob-6.js → addStandardJob-7.js} +58 -63
  45. package/dist/cjs/scripts/addStandardJob-7.js.map +1 -0
  46. package/dist/cjs/scripts/changePriority-6.js +85 -0
  47. package/dist/cjs/scripts/changePriority-6.js.map +1 -0
  48. package/dist/cjs/scripts/getCounts-1.js +1 -0
  49. package/dist/cjs/scripts/getCounts-1.js.map +1 -1
  50. package/dist/cjs/scripts/getRanges-1.js +1 -0
  51. package/dist/cjs/scripts/getRanges-1.js.map +1 -1
  52. package/dist/cjs/scripts/index.js +10 -10
  53. package/dist/cjs/scripts/index.js.map +1 -1
  54. package/dist/cjs/scripts/moveStalledJobsToWait-8.js +1 -0
  55. package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -1
  56. package/dist/cjs/scripts/{moveToActive-10.js → moveToActive-11.js} +30 -48
  57. package/dist/cjs/scripts/moveToActive-11.js.map +1 -0
  58. package/dist/cjs/scripts/moveToDelayed-7.js +103 -0
  59. package/dist/cjs/scripts/moveToDelayed-7.js.map +1 -0
  60. package/dist/cjs/scripts/{moveToFinished-13.js → moveToFinished-14.js} +89 -88
  61. package/dist/cjs/scripts/{moveToFinished-13.js.map → moveToFinished-14.js.map} +1 -1
  62. package/dist/cjs/scripts/moveToWaitingChildren-4.js +6 -3
  63. package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -1
  64. package/dist/cjs/scripts/pause-7.js +67 -0
  65. package/dist/cjs/scripts/pause-7.js.map +1 -0
  66. package/dist/cjs/scripts/promote-8.js +79 -0
  67. package/dist/cjs/scripts/promote-8.js.map +1 -0
  68. package/dist/cjs/scripts/{retryJob-9.js → retryJob-10.js} +26 -32
  69. package/dist/cjs/scripts/retryJob-10.js.map +1 -0
  70. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  71. package/dist/esm/classes/flow-producer.js +3 -10
  72. package/dist/esm/classes/flow-producer.js.map +1 -1
  73. package/dist/esm/classes/job.d.ts +5 -0
  74. package/dist/esm/classes/job.js +21 -11
  75. package/dist/esm/classes/job.js.map +1 -1
  76. package/dist/esm/classes/queue-base.js +2 -9
  77. package/dist/esm/classes/queue-base.js.map +1 -1
  78. package/dist/esm/classes/queue-events.js +3 -1
  79. package/dist/esm/classes/queue-events.js.map +1 -1
  80. package/dist/esm/classes/queue-keys.js +1 -0
  81. package/dist/esm/classes/queue-keys.js.map +1 -1
  82. package/dist/esm/classes/redis-connection.js +9 -7
  83. package/dist/esm/classes/redis-connection.js.map +1 -1
  84. package/dist/esm/classes/scripts.d.ts +4 -4
  85. package/dist/esm/classes/scripts.js +34 -34
  86. package/dist/esm/classes/scripts.js.map +1 -1
  87. package/dist/esm/classes/worker.d.ts +1 -1
  88. package/dist/esm/classes/worker.js +27 -32
  89. package/dist/esm/classes/worker.js.map +1 -1
  90. package/dist/esm/commands/{addDelayedJob-7.lua → addDelayedJob-6.lua} +18 -22
  91. package/dist/esm/commands/addParentJob-4.lua +0 -2
  92. package/dist/{cjs/commands/addPrioritizedJob-8.lua → esm/commands/addPrioritizedJob-7.lua} +18 -24
  93. package/dist/esm/commands/{addStandardJob-6.lua → addStandardJob-7.lua} +6 -2
  94. package/dist/esm/commands/changePriority-6.lua +57 -0
  95. package/dist/esm/commands/getCounts-1.lua +1 -0
  96. package/dist/esm/commands/getRanges-1.lua +1 -0
  97. package/dist/esm/commands/includes/addDelayMarkerIfNeeded.lua +5 -19
  98. package/dist/esm/commands/includes/addJobWithPriority.lua +3 -7
  99. package/dist/esm/commands/includes/checkStalledJobs.lua +1 -1
  100. package/dist/esm/commands/includes/isQueuePaused.lua +7 -0
  101. package/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +39 -30
  102. package/dist/esm/commands/includes/prepareJobForProcessing.lua +1 -1
  103. package/dist/esm/commands/includes/promoteDelayedJobs.lua +7 -4
  104. package/dist/{cjs/commands/moveToActive-10.lua → esm/commands/moveToActive-11.lua} +18 -29
  105. package/dist/esm/commands/moveToDelayed-7.lua +77 -0
  106. package/dist/esm/commands/{moveToFinished-13.lua → moveToFinished-14.lua} +29 -22
  107. package/dist/esm/commands/moveToWaitingChildren-4.lua +7 -4
  108. package/dist/esm/commands/pause-7.lua +41 -0
  109. package/dist/esm/commands/promote-8.lua +60 -0
  110. package/dist/esm/commands/{retryJob-9.lua → retryJob-10.lua} +16 -11
  111. package/dist/esm/interfaces/job-json.d.ts +4 -1
  112. package/dist/esm/interfaces/minimal-job.d.ts +3 -0
  113. package/dist/esm/interfaces/queue-options.d.ts +1 -1
  114. package/dist/esm/scripts/{addDelayedJob-7.js → addDelayedJob-6.js} +77 -88
  115. package/dist/esm/scripts/{moveToActive-10.js.map → addDelayedJob-6.js.map} +1 -1
  116. package/dist/esm/scripts/addParentJob-4.js +51 -61
  117. package/dist/esm/scripts/addParentJob-4.js.map +1 -1
  118. package/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-7.js} +80 -93
  119. package/dist/esm/scripts/addPrioritizedJob-7.js.map +1 -0
  120. package/dist/esm/scripts/{addStandardJob-6.js → addStandardJob-7.js} +58 -63
  121. package/dist/esm/scripts/addStandardJob-7.js.map +1 -0
  122. package/dist/esm/scripts/changePriority-6.js +82 -0
  123. package/dist/esm/scripts/changePriority-6.js.map +1 -0
  124. package/dist/esm/scripts/getCounts-1.js +1 -0
  125. package/dist/esm/scripts/getCounts-1.js.map +1 -1
  126. package/dist/esm/scripts/getRanges-1.js +1 -0
  127. package/dist/esm/scripts/getRanges-1.js.map +1 -1
  128. package/dist/esm/scripts/index.d.ts +10 -10
  129. package/dist/esm/scripts/index.js +10 -10
  130. package/dist/esm/scripts/index.js.map +1 -1
  131. package/dist/esm/scripts/moveStalledJobsToWait-8.js +1 -0
  132. package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -1
  133. package/dist/esm/scripts/{moveToActive-10.js → moveToActive-11.js} +30 -48
  134. package/dist/esm/scripts/moveToActive-11.js.map +1 -0
  135. package/dist/esm/scripts/moveToDelayed-7.js +100 -0
  136. package/dist/esm/scripts/moveToDelayed-7.js.map +1 -0
  137. package/dist/esm/scripts/{moveToFinished-13.js → moveToFinished-14.js} +89 -88
  138. package/dist/esm/scripts/{moveToFinished-13.js.map → moveToFinished-14.js.map} +1 -1
  139. package/dist/esm/scripts/moveToWaitingChildren-4.js +6 -3
  140. package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -1
  141. package/dist/esm/scripts/pause-7.js +64 -0
  142. package/dist/esm/scripts/pause-7.js.map +1 -0
  143. package/dist/esm/scripts/promote-8.js +76 -0
  144. package/dist/esm/scripts/promote-8.js.map +1 -0
  145. package/dist/esm/scripts/{retryJob-9.js → retryJob-10.js} +26 -32
  146. package/dist/esm/scripts/retryJob-10.js.map +1 -0
  147. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  148. package/package.json +1 -1
  149. package/dist/cjs/commands/changePriority-5.lua +0 -52
  150. package/dist/cjs/commands/includes/addPriorityMarkerIfNeeded.lua +0 -12
  151. package/dist/cjs/commands/moveToDelayed-8.lua +0 -72
  152. package/dist/cjs/commands/pause-5.lua +0 -36
  153. package/dist/cjs/commands/promote-7.lua +0 -57
  154. package/dist/cjs/scripts/addDelayedJob-7.js.map +0 -1
  155. package/dist/cjs/scripts/addPrioritizedJob-8.js.map +0 -1
  156. package/dist/cjs/scripts/addStandardJob-6.js.map +0 -1
  157. package/dist/cjs/scripts/changePriority-5.js +0 -87
  158. package/dist/cjs/scripts/changePriority-5.js.map +0 -1
  159. package/dist/cjs/scripts/moveToDelayed-8.js +0 -168
  160. package/dist/cjs/scripts/moveToDelayed-8.js.map +0 -1
  161. package/dist/cjs/scripts/pause-5.js +0 -48
  162. package/dist/cjs/scripts/pause-5.js.map +0 -1
  163. package/dist/cjs/scripts/promote-7.js +0 -87
  164. package/dist/cjs/scripts/promote-7.js.map +0 -1
  165. package/dist/cjs/scripts/retryJob-9.js.map +0 -1
  166. package/dist/esm/commands/changePriority-5.lua +0 -52
  167. package/dist/esm/commands/includes/addPriorityMarkerIfNeeded.lua +0 -12
  168. package/dist/esm/commands/moveToDelayed-8.lua +0 -72
  169. package/dist/esm/commands/pause-5.lua +0 -36
  170. package/dist/esm/commands/promote-7.lua +0 -57
  171. package/dist/esm/scripts/addDelayedJob-7.js.map +0 -1
  172. package/dist/esm/scripts/addPrioritizedJob-8.js.map +0 -1
  173. package/dist/esm/scripts/addStandardJob-6.js.map +0 -1
  174. package/dist/esm/scripts/changePriority-5.js +0 -84
  175. package/dist/esm/scripts/changePriority-5.js.map +0 -1
  176. package/dist/esm/scripts/moveToDelayed-8.js +0 -165
  177. package/dist/esm/scripts/moveToDelayed-8.js.map +0 -1
  178. package/dist/esm/scripts/pause-5.js +0 -45
  179. package/dist/esm/scripts/pause-5.js.map +0 -1
  180. package/dist/esm/scripts/promote-7.js +0 -84
  181. package/dist/esm/scripts/promote-7.js.map +0 -1
  182. package/dist/esm/scripts/retryJob-9.js.map +0 -1
  183. /package/dist/esm/scripts/{addDelayedJob-7.d.ts → addDelayedJob-6.d.ts} +0 -0
  184. /package/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-7.d.ts} +0 -0
  185. /package/dist/esm/scripts/{addStandardJob-6.d.ts → addStandardJob-7.d.ts} +0 -0
  186. /package/dist/esm/scripts/{changePriority-5.d.ts → changePriority-6.d.ts} +0 -0
  187. /package/dist/esm/scripts/{moveToActive-10.d.ts → moveToActive-11.d.ts} +0 -0
  188. /package/dist/esm/scripts/{moveToDelayed-8.d.ts → moveToDelayed-7.d.ts} +0 -0
  189. /package/dist/esm/scripts/{moveToFinished-13.d.ts → moveToFinished-14.d.ts} +0 -0
  190. /package/dist/esm/scripts/{pause-5.d.ts → pause-7.d.ts} +0 -0
  191. /package/dist/esm/scripts/{promote-7.d.ts → promote-8.d.ts} +0 -0
  192. /package/dist/esm/scripts/{retryJob-9.d.ts → retryJob-10.d.ts} +0 -0
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.changePriority = void 0;
4
- const content = `--[[
5
- Change job priority
6
- Input:
7
- KEYS[1] 'wait',
8
- KEYS[2] 'paused'
9
- KEYS[3] 'meta'
10
- KEYS[4] 'prioritized'
11
- KEYS[5] 'pc' priority counter
12
- ARGV[1] priority value
13
- ARGV[2] job key
14
- ARGV[3] job id
15
- ARGV[4] lifo
16
- Output:
17
- 0 - OK
18
- -1 - Missing job
19
- ]]
20
- local jobKey = ARGV[2]
21
- local jobId = ARGV[3]
22
- local priority = tonumber(ARGV[1])
23
- local rcall = redis.call
24
- -- Includes
25
- --[[
26
- Function to add job considering priority.
27
- ]]
28
- -- Includes
29
- --[[
30
- Function priority marker to wait if needed
31
- in order to wake up our workers and to respect priority
32
- order as much as possible
33
- ]]
34
- local function addPriorityMarkerIfNeeded(waitKey)
35
- local waitLen = rcall("LLEN", waitKey)
36
- if waitLen == 0 then
37
- rcall("LPUSH", waitKey, "0:0")
38
- end
39
- end
40
- local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
41
- local prioCounter = rcall("INCR", priorityCounterKey)
42
- local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
43
- rcall("ZADD", prioritizedKey, score, jobId)
44
- if not paused then
45
- addPriorityMarkerIfNeeded(waitKey)
46
- end
47
- end
48
- --[[
49
- Function to check for the meta.paused key to decide if we are paused or not
50
- (since an empty list and !EXISTS are not really the same).
51
- ]]
52
- local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
53
- if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
54
- return waitKey, false
55
- else
56
- return pausedKey, true
57
- end
58
- end
59
- if rcall("EXISTS", jobKey) == 1 then
60
- local target, paused = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
61
- if rcall("ZREM", KEYS[4], jobId) > 0 then
62
- addJobWithPriority(KEYS[1], KEYS[4], priority, paused, jobId, KEYS[5])
63
- else
64
- local numRemovedElements = rcall("LREM", target, -1, jobId)
65
- if numRemovedElements > 0 then
66
- -- Standard or priority add
67
- if priority == 0 then
68
- -- LIFO or FIFO
69
- local pushCmd = ARGV[4] == '1' and 'RPUSH' or 'LPUSH';
70
- rcall(pushCmd, target, jobId)
71
- else
72
- addJobWithPriority(KEYS[1], KEYS[4], priority, paused, jobId, KEYS[5])
73
- end
74
- end
75
- end
76
- rcall("HSET", jobKey, "priority", priority)
77
- return 0
78
- else
79
- return -1
80
- end
81
- `;
82
- exports.changePriority = {
83
- name: 'changePriority',
84
- content,
85
- keys: 5,
86
- };
87
- //# sourceMappingURL=changePriority-5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changePriority-5.js","sourceRoot":"","sources":["../../../src/scripts/changePriority-5.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Ef,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1,168 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.moveToDelayed = void 0;
4
- const content = `--[[
5
- Moves job from active to delayed set.
6
- Input:
7
- KEYS[1] wait key
8
- KEYS[2] active key
9
- KEYS[3] prioritized key
10
- KEYS[4] delayed key
11
- KEYS[5] job key
12
- KEYS[6] events stream
13
- KEYS[7] paused key
14
- KEYS[8] meta key
15
- ARGV[1] key prefix
16
- ARGV[2] timestamp
17
- ARGV[3] delayedTimestamp
18
- ARGV[4] the id of the job
19
- ARGV[5] queue token
20
- ARGV[6] delay value
21
- Output:
22
- 0 - OK
23
- -1 - Missing job.
24
- -3 - Job not in active set.
25
- Events:
26
- - delayed key.
27
- ]]
28
- local rcall = redis.call
29
- -- Includes
30
- --[[
31
- Add delay marker if needed.
32
- ]]
33
- -- Includes
34
- --[[
35
- Function to return the next delayed job timestamp.
36
- ]]
37
- local function getNextDelayedTimestamp(delayedKey)
38
- local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
39
- if #result then
40
- local nextTimestamp = tonumber(result[2])
41
- if (nextTimestamp ~= nil) then
42
- nextTimestamp = nextTimestamp / 0x1000
43
- end
44
- return nextTimestamp
45
- end
46
- end
47
- local function addDelayMarkerIfNeeded(targetKey, delayedKey)
48
- local waitLen = rcall("LLEN", targetKey)
49
- if waitLen <= 1 then
50
- local nextTimestamp = getNextDelayedTimestamp(delayedKey)
51
- if nextTimestamp ~= nil then
52
- -- Check if there is already a marker with older timestamp
53
- -- if there is, we need to replace it.
54
- if waitLen == 1 then
55
- local marker = rcall("LINDEX", targetKey, 0)
56
- local oldTimestamp = tonumber(marker:sub(3))
57
- if oldTimestamp and oldTimestamp > nextTimestamp then
58
- rcall("LSET", targetKey, 0, "0:" .. nextTimestamp)
59
- end
60
- else
61
- -- if there is no marker, then we need to add one
62
- rcall("LPUSH", targetKey, "0:" .. nextTimestamp)
63
- end
64
- end
65
- end
66
- end
67
- --[[
68
- Function to check for the meta.paused key to decide if we are paused or not
69
- (since an empty list and !EXISTS are not really the same).
70
- ]]
71
- local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
72
- if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
73
- return waitKey, false
74
- else
75
- return pausedKey, true
76
- end
77
- end
78
- --[[
79
- Updates the delay set, by moving delayed jobs that should
80
- be processed now to "wait".
81
- Events:
82
- 'waiting'
83
- ]]
84
- -- Includes
85
- --[[
86
- Function to add job considering priority.
87
- ]]
88
- -- Includes
89
- --[[
90
- Function priority marker to wait if needed
91
- in order to wake up our workers and to respect priority
92
- order as much as possible
93
- ]]
94
- local function addPriorityMarkerIfNeeded(waitKey)
95
- local waitLen = rcall("LLEN", waitKey)
96
- if waitLen == 0 then
97
- rcall("LPUSH", waitKey, "0:0")
98
- end
99
- end
100
- local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
101
- local prioCounter = rcall("INCR", priorityCounterKey)
102
- local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
103
- rcall("ZADD", prioritizedKey, score, jobId)
104
- if not paused then
105
- addPriorityMarkerIfNeeded(waitKey)
106
- end
107
- end
108
- -- Try to get as much as 1000 jobs at once
109
- local function promoteDelayedJobs(delayedKey, waitKey, targetKey, prioritizedKey,
110
- eventStreamKey, prefix, timestamp, paused, priorityCounterKey)
111
- local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000, "LIMIT", 0, 1000)
112
- if (#jobs > 0) then
113
- rcall("ZREM", delayedKey, unpack(jobs))
114
- for _, jobId in ipairs(jobs) do
115
- local jobKey = prefix .. jobId
116
- local priority =
117
- tonumber(rcall("HGET", jobKey, "priority")) or 0
118
- if priority == 0 then
119
- -- LIFO or FIFO
120
- rcall("LPUSH", targetKey, jobId)
121
- else
122
- addJobWithPriority(waitKey, prioritizedKey, priority, paused,
123
- jobId, priorityCounterKey)
124
- end
125
- -- Emit waiting event
126
- rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
127
- jobId, "prev", "delayed")
128
- rcall("HSET", jobKey, "delay", 0)
129
- end
130
- end
131
- end
132
- local jobKey = KEYS[5]
133
- if rcall("EXISTS", jobKey) == 1 then
134
- local delayedKey = KEYS[4]
135
- if ARGV[5] ~= "0" then
136
- local lockKey = jobKey .. ':lock'
137
- if rcall("GET", lockKey) == ARGV[5] then
138
- rcall("DEL", lockKey)
139
- else
140
- return -2
141
- end
142
- end
143
- local jobId = ARGV[4]
144
- local score = tonumber(ARGV[3])
145
- local delayedTimestamp = (score / 0x1000)
146
- local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
147
- if numRemovedElements < 1 then
148
- return -3
149
- end
150
- rcall("HSET", jobKey, "delay", ARGV[6])
151
- local maxEvents = rcall("HGET", KEYS[8], "opts.maxLenEvents") or 10000
152
- rcall("ZADD", delayedKey, score, jobId)
153
- rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
154
- "jobId", jobId, "delay", delayedTimestamp)
155
- -- Check if we need to push a marker job to wake up sleeping workers.
156
- local target = getTargetQueueList(KEYS[8], KEYS[1], KEYS[7])
157
- addDelayMarkerIfNeeded(target, delayedKey)
158
- return 0
159
- else
160
- return -1
161
- end
162
- `;
163
- exports.moveToDelayed = {
164
- name: 'moveToDelayed',
165
- content,
166
- keys: 8,
167
- };
168
- //# sourceMappingURL=moveToDelayed-8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moveToDelayed-8.js","sourceRoot":"","sources":["../../../src/scripts/moveToDelayed-8.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Jf,CAAC;AACW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pause = void 0;
4
- const content = `--[[
5
- Pauses or resumes a queue globably.
6
- Input:
7
- KEYS[1] 'wait' or 'paused''
8
- KEYS[2] 'paused' or 'wait'
9
- KEYS[3] 'meta'
10
- KEYS[4] 'prioritized'
11
- KEYS[5] events stream key
12
- ARGV[1] 'paused' or 'resumed'
13
- Event:
14
- publish paused or resumed event.
15
- ]]
16
- local rcall = redis.call
17
- -- Includes
18
- --[[
19
- Function priority marker to wait if needed
20
- in order to wake up our workers and to respect priority
21
- order as much as possible
22
- ]]
23
- local function addPriorityMarkerIfNeeded(waitKey)
24
- local waitLen = rcall("LLEN", waitKey)
25
- if waitLen == 0 then
26
- rcall("LPUSH", waitKey, "0:0")
27
- end
28
- end
29
- if rcall("EXISTS", KEYS[1]) == 1 then
30
- rcall("RENAME", KEYS[1], KEYS[2])
31
- end
32
- if ARGV[1] == "paused" then
33
- rcall("HSET", KEYS[3], "paused", 1)
34
- else
35
- rcall("HDEL", KEYS[3], "paused")
36
- local priorityCount = rcall("ZCARD", KEYS[4])
37
- if priorityCount > 0 then
38
- addPriorityMarkerIfNeeded(KEYS[2])
39
- end
40
- end
41
- rcall("XADD", KEYS[5], "*", "event", ARGV[1]);
42
- `;
43
- exports.pause = {
44
- name: 'pause',
45
- content,
46
- keys: 5,
47
- };
48
- //# sourceMappingURL=pause-5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pause-5.js","sourceRoot":"","sources":["../../../src/scripts/pause-5.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCf,CAAC;AACW,QAAA,KAAK,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.promote = void 0;
4
- const content = `--[[
5
- Promotes a job that is currently "delayed" to the "waiting" state
6
- Input:
7
- KEYS[1] 'delayed'
8
- KEYS[2] 'wait'
9
- KEYS[3] 'paused'
10
- KEYS[4] 'meta'
11
- KEYS[5] 'prioritized'
12
- KEYS[6] 'pc' priority counter
13
- KEYS[7] 'event stream'
14
- ARGV[1] queue.toKey('')
15
- ARGV[2] jobId
16
- Output:
17
- 0 - OK
18
- -3 - Job not in delayed zset.
19
- Events:
20
- 'waiting'
21
- ]]
22
- local rcall = redis.call
23
- local jobId = ARGV[2]
24
- -- Includes
25
- --[[
26
- Function to add job considering priority.
27
- ]]
28
- -- Includes
29
- --[[
30
- Function priority marker to wait if needed
31
- in order to wake up our workers and to respect priority
32
- order as much as possible
33
- ]]
34
- local function addPriorityMarkerIfNeeded(waitKey)
35
- local waitLen = rcall("LLEN", waitKey)
36
- if waitLen == 0 then
37
- rcall("LPUSH", waitKey, "0:0")
38
- end
39
- end
40
- local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
41
- local prioCounter = rcall("INCR", priorityCounterKey)
42
- local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
43
- rcall("ZADD", prioritizedKey, score, jobId)
44
- if not paused then
45
- addPriorityMarkerIfNeeded(waitKey)
46
- end
47
- end
48
- --[[
49
- Function to check for the meta.paused key to decide if we are paused or not
50
- (since an empty list and !EXISTS are not really the same).
51
- ]]
52
- local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
53
- if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
54
- return waitKey, false
55
- else
56
- return pausedKey, true
57
- end
58
- end
59
- if rcall("ZREM", KEYS[1], jobId) == 1 then
60
- local jobKey = ARGV[1] .. jobId
61
- local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
62
- local target, paused = getTargetQueueList(KEYS[4], KEYS[2], KEYS[3])
63
- -- Remove delayed "marker" from the wait list if there is any.
64
- -- Since we are adding a job we do not need the marker anymore.
65
- local marker = rcall("LINDEX", target, 0)
66
- if marker and string.sub(marker, 1, 2) == "0:" then
67
- rcall("LPOP", target)
68
- end
69
- if priority == 0 then
70
- -- LIFO or FIFO
71
- rcall("LPUSH", target, jobId)
72
- else
73
- addJobWithPriority(KEYS[2], KEYS[5], priority, paused, jobId, KEYS[6])
74
- end
75
- -- Emit waiting event (wait..ing@token)
76
- rcall("XADD", KEYS[7], "*", "event", "waiting", "jobId", jobId, "prev", "delayed");
77
- rcall("HSET", jobKey, "delay", 0)
78
- return 0
79
- else
80
- return -3
81
- end`;
82
- exports.promote = {
83
- name: 'promote',
84
- content,
85
- keys: 7,
86
- };
87
- //# sourceMappingURL=promote-7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promote-7.js","sourceRoot":"","sources":["../../../src/scripts/promote-7.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6EZ,CAAC;AACQ,QAAA,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"retryJob-9.js","sourceRoot":"","sources":["../../../src/scripts/retryJob-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwHf,CAAC;AACW,QAAA,QAAQ,GAAG;IACtB,IAAI,EAAE,UAAU;IAChB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1,52 +0,0 @@
1
- --[[
2
- Change job priority
3
- Input:
4
- KEYS[1] 'wait',
5
- KEYS[2] 'paused'
6
- KEYS[3] 'meta'
7
- KEYS[4] 'prioritized'
8
- KEYS[5] 'pc' priority counter
9
-
10
- ARGV[1] priority value
11
- ARGV[2] job key
12
- ARGV[3] job id
13
- ARGV[4] lifo
14
-
15
- Output:
16
- 0 - OK
17
- -1 - Missing job
18
- ]]
19
- local jobKey = ARGV[2]
20
- local jobId = ARGV[3]
21
- local priority = tonumber(ARGV[1])
22
- local rcall = redis.call
23
-
24
- -- Includes
25
- --- @include "includes/addJobWithPriority"
26
- --- @include "includes/getTargetQueueList"
27
-
28
- if rcall("EXISTS", jobKey) == 1 then
29
- local target, paused = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
30
-
31
- if rcall("ZREM", KEYS[4], jobId) > 0 then
32
- addJobWithPriority(KEYS[1], KEYS[4], priority, paused, jobId, KEYS[5])
33
- else
34
- local numRemovedElements = rcall("LREM", target, -1, jobId)
35
- if numRemovedElements > 0 then
36
- -- Standard or priority add
37
- if priority == 0 then
38
- -- LIFO or FIFO
39
- local pushCmd = ARGV[4] == '1' and 'RPUSH' or 'LPUSH';
40
- rcall(pushCmd, target, jobId)
41
- else
42
- addJobWithPriority(KEYS[1], KEYS[4], priority, paused, jobId, KEYS[5])
43
- end
44
- end
45
- end
46
-
47
- rcall("HSET", jobKey, "priority", priority)
48
-
49
- return 0
50
- else
51
- return -1
52
- end
@@ -1,12 +0,0 @@
1
- --[[
2
- Function priority marker to wait if needed
3
- in order to wake up our workers and to respect priority
4
- order as much as possible
5
- ]]
6
- local function addPriorityMarkerIfNeeded(waitKey)
7
- local waitLen = rcall("LLEN", waitKey)
8
-
9
- if waitLen == 0 then
10
- rcall("LPUSH", waitKey, "0:0")
11
- end
12
- end
@@ -1,72 +0,0 @@
1
- --[[
2
- Moves job from active to delayed set.
3
-
4
- Input:
5
- KEYS[1] wait key
6
- KEYS[2] active key
7
- KEYS[3] prioritized key
8
- KEYS[4] delayed key
9
- KEYS[5] job key
10
- KEYS[6] events stream
11
- KEYS[7] paused key
12
- KEYS[8] meta key
13
-
14
- ARGV[1] key prefix
15
- ARGV[2] timestamp
16
- ARGV[3] delayedTimestamp
17
- ARGV[4] the id of the job
18
- ARGV[5] queue token
19
- ARGV[6] delay value
20
-
21
- Output:
22
- 0 - OK
23
- -1 - Missing job.
24
- -3 - Job not in active set.
25
-
26
- Events:
27
- - delayed key.
28
- ]]
29
- local rcall = redis.call
30
-
31
- -- Includes
32
- --- @include "includes/addDelayMarkerIfNeeded"
33
- --- @include "includes/getTargetQueueList"
34
- --- @include "includes/promoteDelayedJobs"
35
-
36
- local jobKey = KEYS[5]
37
- if rcall("EXISTS", jobKey) == 1 then
38
- local delayedKey = KEYS[4]
39
- if ARGV[5] ~= "0" then
40
- local lockKey = jobKey .. ':lock'
41
- if rcall("GET", lockKey) == ARGV[5] then
42
- rcall("DEL", lockKey)
43
- else
44
- return -2
45
- end
46
- end
47
-
48
- local jobId = ARGV[4]
49
- local score = tonumber(ARGV[3])
50
- local delayedTimestamp = (score / 0x1000)
51
-
52
- local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
53
- if numRemovedElements < 1 then
54
- return -3
55
- end
56
-
57
- rcall("HSET", jobKey, "delay", ARGV[6])
58
-
59
- local maxEvents = rcall("HGET", KEYS[8], "opts.maxLenEvents") or 10000
60
-
61
- rcall("ZADD", delayedKey, score, jobId)
62
- rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
63
- "jobId", jobId, "delay", delayedTimestamp)
64
-
65
- -- Check if we need to push a marker job to wake up sleeping workers.
66
- local target = getTargetQueueList(KEYS[8], KEYS[1], KEYS[7])
67
- addDelayMarkerIfNeeded(target, delayedKey)
68
-
69
- return 0
70
- else
71
- return -1
72
- end
@@ -1,36 +0,0 @@
1
- --[[
2
- Pauses or resumes a queue globably.
3
-
4
- Input:
5
- KEYS[1] 'wait' or 'paused''
6
- KEYS[2] 'paused' or 'wait'
7
- KEYS[3] 'meta'
8
- KEYS[4] 'prioritized'
9
- KEYS[5] events stream key
10
-
11
- ARGV[1] 'paused' or 'resumed'
12
-
13
- Event:
14
- publish paused or resumed event.
15
- ]]
16
- local rcall = redis.call
17
-
18
- -- Includes
19
- --- @include "includes/addPriorityMarkerIfNeeded"
20
-
21
- if rcall("EXISTS", KEYS[1]) == 1 then
22
- rcall("RENAME", KEYS[1], KEYS[2])
23
- end
24
-
25
- if ARGV[1] == "paused" then
26
- rcall("HSET", KEYS[3], "paused", 1)
27
- else
28
- rcall("HDEL", KEYS[3], "paused")
29
- local priorityCount = rcall("ZCARD", KEYS[4])
30
-
31
- if priorityCount > 0 then
32
- addPriorityMarkerIfNeeded(KEYS[2])
33
- end
34
- end
35
-
36
- rcall("XADD", KEYS[5], "*", "event", ARGV[1]);
@@ -1,57 +0,0 @@
1
- --[[
2
- Promotes a job that is currently "delayed" to the "waiting" state
3
-
4
- Input:
5
- KEYS[1] 'delayed'
6
- KEYS[2] 'wait'
7
- KEYS[3] 'paused'
8
- KEYS[4] 'meta'
9
- KEYS[5] 'prioritized'
10
- KEYS[6] 'pc' priority counter
11
- KEYS[7] 'event stream'
12
-
13
- ARGV[1] queue.toKey('')
14
- ARGV[2] jobId
15
-
16
- Output:
17
- 0 - OK
18
- -3 - Job not in delayed zset.
19
-
20
- Events:
21
- 'waiting'
22
- ]]
23
- local rcall = redis.call
24
- local jobId = ARGV[2]
25
-
26
- -- Includes
27
- --- @include "includes/addJobWithPriority"
28
- --- @include "includes/getTargetQueueList"
29
-
30
- if rcall("ZREM", KEYS[1], jobId) == 1 then
31
- local jobKey = ARGV[1] .. jobId
32
- local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
33
- local target, paused = getTargetQueueList(KEYS[4], KEYS[2], KEYS[3])
34
-
35
- -- Remove delayed "marker" from the wait list if there is any.
36
- -- Since we are adding a job we do not need the marker anymore.
37
- local marker = rcall("LINDEX", target, 0)
38
- if marker and string.sub(marker, 1, 2) == "0:" then
39
- rcall("LPOP", target)
40
- end
41
-
42
- if priority == 0 then
43
- -- LIFO or FIFO
44
- rcall("LPUSH", target, jobId)
45
- else
46
- addJobWithPriority(KEYS[2], KEYS[5], priority, paused, jobId, KEYS[6])
47
- end
48
-
49
- -- Emit waiting event (wait..ing@token)
50
- rcall("XADD", KEYS[7], "*", "event", "waiting", "jobId", jobId, "prev", "delayed");
51
-
52
- rcall("HSET", jobKey, "delay", 0)
53
-
54
- return 0
55
- else
56
- return -3
57
- end
@@ -1 +0,0 @@
1
- {"version":3,"file":"addDelayedJob-7.js","sourceRoot":"","sources":["../../../src/scripts/addDelayedJob-7.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyQf,CAAC;AACF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addPrioritizedJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addPrioritizedJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoQf,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,mBAAmB;IACzB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addStandardJob-6.js","sourceRoot":"","sources":["../../../src/scripts/addStandardJob-6.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqQf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}