bullmq 2.2.0 → 2.3.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 (234) hide show
  1. package/dist/cjs/classes/job.d.ts +1 -1
  2. package/dist/cjs/classes/redis-connection.d.ts +6 -2
  3. package/dist/cjs/classes/redis-connection.js +12 -5
  4. package/dist/cjs/classes/redis-connection.js.map +1 -1
  5. package/dist/cjs/scripts/addJob-8.d.ts +5 -0
  6. package/dist/{esm/commands/addJob-8.lua → cjs/scripts/addJob-8.js} +83 -31
  7. package/dist/cjs/scripts/addJob-8.js.map +1 -0
  8. package/dist/cjs/scripts/changeDelay-4.d.ts +5 -0
  9. package/dist/cjs/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +11 -11
  10. package/dist/cjs/scripts/changeDelay-4.js.map +1 -0
  11. package/dist/cjs/scripts/cleanJobsInSet-2.d.ts +5 -0
  12. package/dist/cjs/scripts/cleanJobsInSet-2.js +264 -0
  13. package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
  14. package/dist/cjs/scripts/drain-4.d.ts +5 -0
  15. package/dist/cjs/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +110 -10
  16. package/dist/cjs/scripts/drain-4.js.map +1 -0
  17. package/dist/cjs/scripts/extendLock-2.d.ts +5 -0
  18. package/dist/{esm/commands/extendLock-2.lua → cjs/scripts/extendLock-2.js} +11 -4
  19. package/dist/cjs/scripts/extendLock-2.js.map +1 -0
  20. package/dist/cjs/scripts/getState-7.d.ts +5 -0
  21. package/dist/{esm/commands/getState-7.lua → cjs/scripts/getState-7.js} +22 -12
  22. package/dist/cjs/scripts/getState-7.js.map +1 -0
  23. package/dist/cjs/scripts/getStateV2-7.d.ts +5 -0
  24. package/dist/cjs/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +11 -10
  25. package/dist/cjs/scripts/getStateV2-7.js.map +1 -0
  26. package/dist/cjs/scripts/index.d.ts +26 -0
  27. package/dist/cjs/scripts/index.js +30 -0
  28. package/dist/cjs/scripts/index.js.map +1 -0
  29. package/dist/cjs/scripts/isFinished-3.d.ts +5 -0
  30. package/dist/cjs/{commands/isFinished-3.lua → scripts/isFinished-3.js} +11 -10
  31. package/dist/cjs/scripts/isFinished-3.js.map +1 -0
  32. package/dist/cjs/scripts/isJobInList-1.d.ts +5 -0
  33. package/dist/cjs/scripts/isJobInList-1.js +32 -0
  34. package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
  35. package/dist/cjs/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  36. package/dist/cjs/scripts/moveStalledJobsToWait-8.js +291 -0
  37. package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
  38. package/dist/cjs/scripts/moveToActive-9.d.ts +5 -0
  39. package/dist/cjs/scripts/moveToActive-9.js +207 -0
  40. package/dist/cjs/scripts/moveToActive-9.js.map +1 -0
  41. package/dist/cjs/scripts/moveToDelayed-5.d.ts +5 -0
  42. package/dist/cjs/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +11 -13
  43. package/dist/cjs/scripts/moveToDelayed-5.js.map +1 -0
  44. package/dist/cjs/scripts/moveToFinished-12.d.ts +5 -0
  45. package/dist/cjs/scripts/moveToFinished-12.js +538 -0
  46. package/dist/cjs/scripts/moveToFinished-12.js.map +1 -0
  47. package/dist/cjs/scripts/moveToWaitingChildren-4.d.ts +5 -0
  48. package/dist/cjs/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +11 -14
  49. package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
  50. package/dist/cjs/scripts/obliterate-2.d.ts +5 -0
  51. package/dist/cjs/scripts/obliterate-2.js +241 -0
  52. package/dist/cjs/scripts/obliterate-2.js.map +1 -0
  53. package/dist/cjs/scripts/pause-4.d.ts +5 -0
  54. package/dist/{esm/commands/pause-4.lua → cjs/scripts/pause-4.js} +11 -7
  55. package/dist/cjs/scripts/pause-4.js.map +1 -0
  56. package/dist/cjs/scripts/promote-6.d.ts +5 -0
  57. package/dist/cjs/{commands/promote-6.lua → scripts/promote-6.js} +22 -14
  58. package/dist/cjs/scripts/promote-6.js.map +1 -0
  59. package/dist/cjs/scripts/releaseLock-1.d.ts +5 -0
  60. package/dist/{esm/commands/releaseLock-1.lua → cjs/scripts/releaseLock-1.js} +11 -5
  61. package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
  62. package/dist/cjs/scripts/removeJob-1.d.ts +5 -0
  63. package/dist/cjs/scripts/removeJob-1.js +206 -0
  64. package/dist/cjs/scripts/removeJob-1.js.map +1 -0
  65. package/dist/cjs/scripts/removeRepeatable-2.d.ts +5 -0
  66. package/dist/cjs/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +11 -7
  67. package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
  68. package/dist/cjs/scripts/reprocessJob-4.d.ts +5 -0
  69. package/dist/{esm/commands/reprocessJob-4.lua → cjs/scripts/reprocessJob-4.js} +11 -5
  70. package/dist/cjs/scripts/reprocessJob-4.js.map +1 -0
  71. package/dist/cjs/scripts/retryJob-6.d.ts +5 -0
  72. package/dist/{esm/commands/retryJob-6.lua → cjs/scripts/retryJob-6.js} +22 -13
  73. package/dist/cjs/scripts/retryJob-6.js.map +1 -0
  74. package/dist/cjs/scripts/retryJobs-6.d.ts +5 -0
  75. package/dist/cjs/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +38 -15
  76. package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
  77. package/dist/cjs/scripts/takeLock-1.d.ts +5 -0
  78. package/dist/cjs/{commands/takeLock-1.lua → scripts/takeLock-1.js} +11 -4
  79. package/dist/cjs/scripts/takeLock-1.js.map +1 -0
  80. package/dist/cjs/scripts/updateData-1.d.ts +5 -0
  81. package/dist/cjs/scripts/updateData-1.js +23 -0
  82. package/dist/cjs/scripts/updateData-1.js.map +1 -0
  83. package/dist/cjs/scripts/updateProgress-2.d.ts +5 -0
  84. package/dist/{esm/commands/updateProgress-2.lua → cjs/scripts/updateProgress-2.js} +11 -5
  85. package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
  86. package/dist/esm/classes/job.d.ts +1 -1
  87. package/dist/esm/classes/redis-connection.d.ts +6 -2
  88. package/dist/esm/classes/redis-connection.js +12 -5
  89. package/dist/esm/classes/redis-connection.js.map +1 -1
  90. package/dist/esm/scripts/addJob-8.d.ts +5 -0
  91. package/dist/{cjs/commands/addJob-8.lua → esm/scripts/addJob-8.js} +80 -31
  92. package/dist/esm/scripts/addJob-8.js.map +1 -0
  93. package/dist/esm/scripts/changeDelay-4.d.ts +5 -0
  94. package/dist/esm/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +8 -11
  95. package/dist/esm/scripts/changeDelay-4.js.map +1 -0
  96. package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
  97. package/dist/esm/scripts/cleanJobsInSet-2.js +261 -0
  98. package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
  99. package/dist/esm/scripts/drain-4.d.ts +5 -0
  100. package/dist/esm/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +107 -10
  101. package/dist/esm/scripts/drain-4.js.map +1 -0
  102. package/dist/esm/scripts/extendLock-2.d.ts +5 -0
  103. package/dist/{cjs/commands/extendLock-2.lua → esm/scripts/extendLock-2.js} +8 -4
  104. package/dist/esm/scripts/extendLock-2.js.map +1 -0
  105. package/dist/esm/scripts/getState-7.d.ts +5 -0
  106. package/dist/{cjs/commands/getState-7.lua → esm/scripts/getState-7.js} +19 -12
  107. package/dist/esm/scripts/getState-7.js.map +1 -0
  108. package/dist/esm/scripts/getStateV2-7.d.ts +5 -0
  109. package/dist/esm/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +8 -10
  110. package/dist/esm/scripts/getStateV2-7.js.map +1 -0
  111. package/dist/esm/scripts/index.d.ts +26 -0
  112. package/dist/esm/scripts/index.js +27 -0
  113. package/dist/esm/scripts/index.js.map +1 -0
  114. package/dist/esm/scripts/isFinished-3.d.ts +5 -0
  115. package/dist/esm/{commands/isFinished-3.lua → scripts/isFinished-3.js} +8 -10
  116. package/dist/esm/scripts/isFinished-3.js.map +1 -0
  117. package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
  118. package/dist/esm/scripts/isJobInList-1.js +29 -0
  119. package/dist/esm/scripts/isJobInList-1.js.map +1 -0
  120. package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  121. package/dist/esm/scripts/moveStalledJobsToWait-8.js +288 -0
  122. package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
  123. package/dist/esm/scripts/moveToActive-9.d.ts +5 -0
  124. package/dist/esm/scripts/moveToActive-9.js +204 -0
  125. package/dist/esm/scripts/moveToActive-9.js.map +1 -0
  126. package/dist/esm/scripts/moveToDelayed-5.d.ts +5 -0
  127. package/dist/esm/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +8 -13
  128. package/dist/esm/scripts/moveToDelayed-5.js.map +1 -0
  129. package/dist/esm/scripts/moveToFinished-12.d.ts +5 -0
  130. package/dist/esm/scripts/moveToFinished-12.js +535 -0
  131. package/dist/esm/scripts/moveToFinished-12.js.map +1 -0
  132. package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
  133. package/dist/esm/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +8 -14
  134. package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
  135. package/dist/esm/scripts/obliterate-2.d.ts +5 -0
  136. package/dist/esm/scripts/obliterate-2.js +238 -0
  137. package/dist/esm/scripts/obliterate-2.js.map +1 -0
  138. package/dist/esm/scripts/pause-4.d.ts +5 -0
  139. package/dist/{cjs/commands/pause-4.lua → esm/scripts/pause-4.js} +8 -7
  140. package/dist/esm/scripts/pause-4.js.map +1 -0
  141. package/dist/esm/scripts/promote-6.d.ts +5 -0
  142. package/dist/esm/{commands/promote-6.lua → scripts/promote-6.js} +19 -14
  143. package/dist/esm/scripts/promote-6.js.map +1 -0
  144. package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
  145. package/dist/{cjs/commands/releaseLock-1.lua → esm/scripts/releaseLock-1.js} +8 -5
  146. package/dist/esm/scripts/releaseLock-1.js.map +1 -0
  147. package/dist/esm/scripts/removeJob-1.d.ts +5 -0
  148. package/dist/esm/scripts/removeJob-1.js +203 -0
  149. package/dist/esm/scripts/removeJob-1.js.map +1 -0
  150. package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
  151. package/dist/esm/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +8 -7
  152. package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
  153. package/dist/esm/scripts/reprocessJob-4.d.ts +5 -0
  154. package/dist/{cjs/commands/reprocessJob-4.lua → esm/scripts/reprocessJob-4.js} +8 -5
  155. package/dist/esm/scripts/reprocessJob-4.js.map +1 -0
  156. package/dist/esm/scripts/retryJob-6.d.ts +5 -0
  157. package/dist/{cjs/commands/retryJob-6.lua → esm/scripts/retryJob-6.js} +19 -13
  158. package/dist/esm/scripts/retryJob-6.js.map +1 -0
  159. package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
  160. package/dist/esm/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +35 -15
  161. package/dist/esm/scripts/retryJobs-6.js.map +1 -0
  162. package/dist/esm/scripts/takeLock-1.d.ts +5 -0
  163. package/dist/esm/{commands/takeLock-1.lua → scripts/takeLock-1.js} +8 -4
  164. package/dist/esm/scripts/takeLock-1.js.map +1 -0
  165. package/dist/esm/scripts/updateData-1.d.ts +5 -0
  166. package/dist/esm/{commands/updateData-1.lua → scripts/updateData-1.js} +8 -4
  167. package/dist/esm/scripts/updateData-1.js.map +1 -0
  168. package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
  169. package/dist/{cjs/commands/updateProgress-2.lua → esm/scripts/updateProgress-2.js} +8 -5
  170. package/dist/esm/scripts/updateProgress-2.js.map +1 -0
  171. package/package.json +4 -2
  172. package/dist/cjs/commands/cleanJobsInSet-2.lua +0 -46
  173. package/dist/cjs/commands/drain-4.lua +0 -25
  174. package/dist/cjs/commands/includes/addJobWithPriority.lua +0 -16
  175. package/dist/cjs/commands/includes/batches.lua +0 -18
  176. package/dist/cjs/commands/includes/checkItemInList.lua +0 -12
  177. package/dist/cjs/commands/includes/checkStalledJobs.lua +0 -137
  178. package/dist/cjs/commands/includes/cleanList.lua +0 -50
  179. package/dist/cjs/commands/includes/cleanSet.lua +0 -50
  180. package/dist/cjs/commands/includes/collectMetrics.lua +0 -46
  181. package/dist/cjs/commands/includes/destructureJobKey.lua +0 -12
  182. package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +0 -13
  183. package/dist/cjs/commands/includes/getTargetQueueList.lua +0 -12
  184. package/dist/cjs/commands/includes/getTimestamp.lua +0 -19
  185. package/dist/cjs/commands/includes/getZSetItems.lua +0 -7
  186. package/dist/cjs/commands/includes/isLocked.lua +0 -31
  187. package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +0 -84
  188. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
  189. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +0 -49
  190. package/dist/cjs/commands/includes/removeJob.lua +0 -13
  191. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +0 -26
  192. package/dist/cjs/commands/includes/removeJobs.lua +0 -38
  193. package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +0 -15
  194. package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +0 -15
  195. package/dist/cjs/commands/includes/trimEvents.lua +0 -12
  196. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +0 -28
  197. package/dist/cjs/commands/isJobInList-1.lua +0 -16
  198. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +0 -24
  199. package/dist/cjs/commands/moveToActive-9.lua +0 -67
  200. package/dist/cjs/commands/moveToFinished-12.lua +0 -201
  201. package/dist/cjs/commands/obliterate-2.lua +0 -94
  202. package/dist/cjs/commands/removeJob-1.lua +0 -72
  203. package/dist/cjs/commands/updateData-1.lua +0 -16
  204. package/dist/esm/commands/cleanJobsInSet-2.lua +0 -46
  205. package/dist/esm/commands/drain-4.lua +0 -25
  206. package/dist/esm/commands/includes/addJobWithPriority.lua +0 -16
  207. package/dist/esm/commands/includes/batches.lua +0 -18
  208. package/dist/esm/commands/includes/checkItemInList.lua +0 -12
  209. package/dist/esm/commands/includes/checkStalledJobs.lua +0 -137
  210. package/dist/esm/commands/includes/cleanList.lua +0 -50
  211. package/dist/esm/commands/includes/cleanSet.lua +0 -50
  212. package/dist/esm/commands/includes/collectMetrics.lua +0 -46
  213. package/dist/esm/commands/includes/destructureJobKey.lua +0 -12
  214. package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +0 -13
  215. package/dist/esm/commands/includes/getTargetQueueList.lua +0 -12
  216. package/dist/esm/commands/includes/getTimestamp.lua +0 -19
  217. package/dist/esm/commands/includes/getZSetItems.lua +0 -7
  218. package/dist/esm/commands/includes/isLocked.lua +0 -31
  219. package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +0 -84
  220. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
  221. package/dist/esm/commands/includes/promoteDelayedJobs.lua +0 -49
  222. package/dist/esm/commands/includes/removeJob.lua +0 -13
  223. package/dist/esm/commands/includes/removeJobFromAnyState.lua +0 -26
  224. package/dist/esm/commands/includes/removeJobs.lua +0 -38
  225. package/dist/esm/commands/includes/removeJobsByMaxAge.lua +0 -15
  226. package/dist/esm/commands/includes/removeJobsByMaxCount.lua +0 -15
  227. package/dist/esm/commands/includes/trimEvents.lua +0 -12
  228. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +0 -28
  229. package/dist/esm/commands/isJobInList-1.lua +0 -16
  230. package/dist/esm/commands/moveStalledJobsToWait-8.lua +0 -24
  231. package/dist/esm/commands/moveToActive-9.lua +0 -67
  232. package/dist/esm/commands/moveToFinished-12.lua +0 -201
  233. package/dist/esm/commands/obliterate-2.lua +0 -94
  234. package/dist/esm/commands/removeJob-1.lua +0 -72
@@ -0,0 +1,238 @@
1
+ const content = `--[[
2
+ Completely obliterates a queue and all of its contents
3
+ Input:
4
+ KEYS[1] meta
5
+ KEYS[2] base
6
+ ARGV[1] count
7
+ ARGV[2] force
8
+ ]]
9
+ -- This command completely destroys a queue including all of its jobs, current or past
10
+ -- leaving no trace of its existence. Since this script needs to iterate to find all the job
11
+ -- keys, consider that this call may be slow for very large queues.
12
+ -- The queue needs to be "paused" or it will return an error
13
+ -- If the queue has currently active jobs then the script by default will return error,
14
+ -- however this behaviour can be overrided using the 'force' option.
15
+ local maxCount = tonumber(ARGV[1])
16
+ local baseKey = KEYS[2]
17
+ local rcall = redis.call
18
+ --[[
19
+ Functions to remove jobs.
20
+ ]]
21
+ -- Includes
22
+ --[[
23
+ Function to loop in batches.
24
+ Just a bit of warning, some commands as ZREM
25
+ could receive a maximum of 7000 parameters per call.
26
+ ]]
27
+ local function batches(n, batchSize)
28
+ local i = 0
29
+ return function()
30
+ local from = i * batchSize + 1
31
+ i = i + 1
32
+ if (from <= n) then
33
+ local to = math.min(from + batchSize - 1, n)
34
+ return from, to
35
+ end
36
+ end
37
+ end
38
+ local function getListItems(keyName, max)
39
+ return rcall('LRANGE', keyName, 0, max - 1)
40
+ end
41
+ --[[
42
+ Function to get ZSet items.
43
+ ]]
44
+ local function getZSetItems(keyName, max)
45
+ return rcall('ZRANGE', keyName, 0, max - 1)
46
+ end
47
+ --[[
48
+ Function to remove job.
49
+ ]]
50
+ -- Includes
51
+ --[[
52
+ Check if this job has a parent. If so we will just remove it from
53
+ the parent child list, but if it is the last child we should move the parent to "wait/paused"
54
+ which requires code from "moveToFinished"
55
+ ]]
56
+ --[[
57
+ Functions to destructure job key.
58
+ Just a bit of warning, these functions may be a bit slow and affect performance significantly.
59
+ ]]
60
+ local getJobIdFromKey = function (jobKey)
61
+ return string.match(jobKey, ".*:(.*)")
62
+ end
63
+ local getJobKeyPrefix = function (jobKey, jobId)
64
+ return string.sub(jobKey, 0, #jobKey - #jobId)
65
+ end
66
+ --[[
67
+ Function to check for the meta.paused key to decide if we are paused or not
68
+ (since an empty list and !EXISTS are not really the same).
69
+ ]]
70
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
71
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
72
+ return waitKey
73
+ else
74
+ return pausedKey
75
+ end
76
+ end
77
+ local function moveParentToWait(parentPrefix, parentId, emitEvent)
78
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
79
+ rcall("RPUSH", parentTarget, parentId)
80
+ if emitEvent then
81
+ local parentEventStream = parentPrefix .. "events"
82
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
83
+ end
84
+ end
85
+ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
86
+ if parentKey then
87
+ local parentProcessedKey = parentKey .. ":processed"
88
+ rcall("HDEL", parentProcessedKey, jobKey)
89
+ local parentDependenciesKey = parentKey .. ":dependencies"
90
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
91
+ if result > 0 then
92
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
93
+ if pendingDependencies == 0 then
94
+ local parentId = getJobIdFromKey(parentKey)
95
+ local parentPrefix = getJobKeyPrefix(parentKey, parentId)
96
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
97
+ if numRemovedElements == 1 then
98
+ if hard then
99
+ if parentPrefix == baseKey then
100
+ removeParentDependencyKey(parentKey, hard, nil, baseKey)
101
+ rcall("DEL", parentKey, parentKey .. ':logs',
102
+ parentKey .. ':dependencies', parentKey .. ':processed')
103
+ else
104
+ moveParentToWait(parentPrefix, parentId)
105
+ end
106
+ else
107
+ moveParentToWait(parentPrefix, parentId, true)
108
+ end
109
+ end
110
+ end
111
+ end
112
+ else
113
+ local missedParentKey = rcall("HGET", jobKey, "parentKey")
114
+ if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
115
+ local parentProcessedKey = missedParentKey .. ":processed"
116
+ rcall("HDEL", parentProcessedKey, jobKey)
117
+ local parentDependenciesKey = missedParentKey .. ":dependencies"
118
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
119
+ if result > 0 then
120
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
121
+ if pendingDependencies == 0 then
122
+ local parentId = getJobIdFromKey(missedParentKey)
123
+ local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
124
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
125
+ if numRemovedElements == 1 then
126
+ if hard then
127
+ if parentPrefix == baseKey then
128
+ removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
129
+ rcall("DEL", missedParentKey, missedParentKey .. ':logs',
130
+ missedParentKey .. ':dependencies', missedParentKey .. ':processed')
131
+ else
132
+ moveParentToWait(parentPrefix, parentId)
133
+ end
134
+ else
135
+ moveParentToWait(parentPrefix, parentId, true)
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ local function removeJob(jobId, hard, baseKey)
144
+ local jobKey = baseKey .. jobId
145
+ removeParentDependencyKey(jobKey, hard, nil, baseKey)
146
+ rcall("DEL", jobKey, jobKey .. ':logs',
147
+ jobKey .. ':dependencies', jobKey .. ':processed')
148
+ end
149
+ local function removeJobs(keys, hard, baseKey, max)
150
+ for i, key in ipairs(keys) do
151
+ removeJob(key, hard, baseKey)
152
+ end
153
+ return max - #keys
154
+ end
155
+ local function removeListJobs(keyName, hard, baseKey, max)
156
+ local jobs = getListItems(keyName, max)
157
+ local count = removeJobs(jobs, hard, baseKey, max)
158
+ rcall("LTRIM", keyName, #jobs, -1)
159
+ return count
160
+ end
161
+ local function removeZSetJobs(keyName, hard, baseKey, max)
162
+ local jobs = getZSetItems(keyName, max)
163
+ local count = removeJobs(jobs, hard, baseKey, max)
164
+ if(#jobs > 0) then
165
+ for from, to in batches(#jobs, 7000) do
166
+ rcall("ZREM", keyName, unpack(jobs))
167
+ end
168
+ end
169
+ return count
170
+ end
171
+ local function removeLockKeys(keys)
172
+ for i, key in ipairs(keys) do
173
+ rcall("DEL", baseKey .. key .. ':lock')
174
+ end
175
+ end
176
+ -- 1) Check if paused, if not return with error.
177
+ if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
178
+ return -1 -- Error, NotPaused
179
+ end
180
+ -- 2) Check if there are active jobs, if there are and not "force" return error.
181
+ local activeKey = baseKey .. 'active'
182
+ local activeJobs = getListItems(activeKey, maxCount)
183
+ if (#activeJobs > 0) then
184
+ if(ARGV[2] == "") then
185
+ return -2 -- Error, ExistActiveJobs
186
+ end
187
+ end
188
+ removeLockKeys(activeJobs)
189
+ maxCount = removeJobs(activeJobs, true, baseKey, maxCount)
190
+ rcall("LTRIM", activeKey, #activeJobs, -1)
191
+ if(maxCount <= 0) then
192
+ return 1
193
+ end
194
+ local delayedKey = baseKey .. 'delayed'
195
+ maxCount = removeZSetJobs(delayedKey, true, baseKey, maxCount)
196
+ if(maxCount <= 0) then
197
+ return 1
198
+ end
199
+ local completedKey = baseKey .. 'completed'
200
+ maxCount = removeZSetJobs(completedKey, true, baseKey, maxCount)
201
+ if(maxCount <= 0) then
202
+ return 1
203
+ end
204
+ local waitKey = baseKey .. 'paused'
205
+ maxCount = removeListJobs(waitKey, true, baseKey, maxCount)
206
+ if(maxCount <= 0) then
207
+ return 1
208
+ end
209
+ local failedKey = baseKey .. 'failed'
210
+ maxCount = removeZSetJobs(failedKey, true, baseKey, maxCount)
211
+ if(maxCount <= 0) then
212
+ return 1
213
+ end
214
+ if(maxCount > 0) then
215
+ rcall("DEL",
216
+ baseKey .. 'priority',
217
+ baseKey .. 'events',
218
+ baseKey .. 'delay',
219
+ baseKey .. 'stalled-check',
220
+ baseKey .. 'stalled',
221
+ baseKey .. 'id',
222
+ baseKey .. 'meta',
223
+ baseKey .. 'repeat',
224
+ baseKey .. 'metrics:completed',
225
+ baseKey .. 'metrics:completed:data',
226
+ baseKey .. 'metrics:failed',
227
+ baseKey .. 'metrics:failed:data')
228
+ return 0
229
+ else
230
+ return 1
231
+ end
232
+ `;
233
+ export const obliterate = {
234
+ name: 'obliterate',
235
+ content,
236
+ keys: 2,
237
+ };
238
+ //# sourceMappingURL=obliterate-2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obliterate-2.js","sourceRoot":"","sources":["../../../src/scripts/obliterate-2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuOf,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,YAAY;IAClB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const pause: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -1,27 +1,28 @@
1
- --[[
1
+ const content = `--[[
2
2
  Pauses or resumes a queue globably.
3
-
4
3
  Input:
5
4
  KEYS[1] 'wait' or 'paused''
6
5
  KEYS[2] 'paused' or 'wait'
7
6
  KEYS[3] 'meta'
8
7
  KEYS[4] events stream key
9
-
10
8
  ARGV[1] 'paused' or 'resumed'
11
-
12
9
  Event:
13
10
  publish paused or resumed event.
14
11
  ]]
15
12
  local rcall = redis.call
16
-
17
13
  if rcall("EXISTS", KEYS[1]) == 1 then
18
14
  rcall("RENAME", KEYS[1], KEYS[2])
19
15
  end
20
-
21
16
  if ARGV[1] == "paused" then
22
17
  rcall("HSET", KEYS[3], "paused", 1)
23
18
  else
24
19
  rcall("HDEL", KEYS[3], "paused")
25
20
  end
26
-
27
21
  rcall("XADD", KEYS[4], "*", "event", ARGV[1]);
22
+ `;
23
+ export const pause = {
24
+ name: 'pause',
25
+ content,
26
+ keys: 4,
27
+ };
28
+ //# sourceMappingURL=pause-4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-4.js","sourceRoot":"","sources":["../../../src/scripts/pause-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBf,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const promote: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -1,6 +1,5 @@
1
- --[[
1
+ const content = `--[[
2
2
  Promotes a job that is currently "delayed" to the "waiting" state
3
-
4
3
  Input:
5
4
  KEYS[1] 'delayed'
6
5
  KEYS[2] 'wait'
@@ -8,29 +7,33 @@
8
7
  KEYS[4] 'meta'
9
8
  KEYS[5] 'priority'
10
9
  KEYS[6] 'event stream'
11
-
12
10
  ARGV[1] queue.toKey('')
13
11
  ARGV[2] jobId
14
-
15
12
  Events:
16
13
  'waiting'
17
14
  ]]
18
15
  local rcall = redis.call;
19
16
  local jobId = ARGV[2]
20
-
21
17
  -- Includes
22
- --- @include "includes/getTargetQueueList"
23
-
18
+ --[[
19
+ Function to check for the meta.paused key to decide if we are paused or not
20
+ (since an empty list and !EXISTS are not really the same).
21
+ ]]
22
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
23
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
24
+ return waitKey
25
+ else
26
+ return pausedKey
27
+ end
28
+ end
24
29
  if rcall("ZREM", KEYS[1], jobId) == 1 then
25
30
  local priority = tonumber(rcall("HGET", ARGV[1] .. jobId, "priority")) or 0
26
31
  local target = getTargetQueueList(KEYS[4], KEYS[2], KEYS[3])
27
-
28
32
  -- Remove delayed "marker" from the wait list if there is any.
29
33
  -- Since we are adding a job we do not need the marker anymore.
30
34
  if rcall("LINDEX", target, 0) == "0" then
31
35
  rcall("LPOP", target)
32
36
  end
33
-
34
37
  if priority == 0 then
35
38
  -- LIFO or FIFO
36
39
  rcall("LPUSH", target, jobId)
@@ -38,7 +41,6 @@ if rcall("ZREM", KEYS[1], jobId) == 1 then
38
41
  -- Priority add
39
42
  rcall("ZADD", KEYS[5], priority, jobId)
40
43
  local count = rcall("ZCOUNT", KEYS[5], 0, priority)
41
-
42
44
  local len = rcall("LLEN", target)
43
45
  local id = rcall("LINDEX", target, len - (count - 1))
44
46
  if id then
@@ -47,13 +49,16 @@ if rcall("ZREM", KEYS[1], jobId) == 1 then
47
49
  rcall("RPUSH", target, jobId)
48
50
  end
49
51
  end
50
-
51
52
  -- Emit waiting event (wait..ing@token)
52
53
  rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", jobId, "prev", "delayed");
53
-
54
54
  rcall("HSET", ARGV[1] .. jobId, "delay", 0)
55
-
56
55
  return 0
57
56
  else
58
57
  return -3
59
- end
58
+ end`;
59
+ export const promote = {
60
+ name: 'promote',
61
+ content,
62
+ keys: 6,
63
+ };
64
+ //# sourceMappingURL=promote-6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote-6.js","sourceRoot":"","sources":["../../../src/scripts/promote-6.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyDZ,CAAC;AACL,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const releaseLock: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -1,19 +1,22 @@
1
- --[[
1
+ const content = `--[[
2
2
  Release lock
3
-
4
3
  Input:
5
4
  KEYS[1] 'lock',
6
-
7
5
  ARGV[1] token
8
6
  ARGV[2] lock duration in milliseconds
9
-
10
7
  Output:
11
8
  "OK" if lock extented succesfully.
12
9
  ]]
13
10
  local rcall = redis.call
14
-
15
11
  if rcall("GET", KEYS[1]) == ARGV[1] then
16
12
  return rcall("DEL", KEYS[1])
17
13
  else
18
14
  return 0
19
15
  end
16
+ `;
17
+ export const releaseLock = {
18
+ name: 'releaseLock',
19
+ content,
20
+ keys: 1,
21
+ };
22
+ //# sourceMappingURL=releaseLock-1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseLock-1.js","sourceRoot":"","sources":["../../../src/scripts/releaseLock-1.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;CAef,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IACnB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const removeJob: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -0,0 +1,203 @@
1
+ const content = `--[[
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
+ Input:
5
+ KEYS[1] queue prefix
6
+ ARGV[1] jobId
7
+ Events:
8
+ 'removed'
9
+ ]]
10
+ local rcall = redis.call
11
+ -- Includes
12
+ --[[
13
+ Functions to destructure job key.
14
+ Just a bit of warning, these functions may be a bit slow and affect performance significantly.
15
+ ]]
16
+ local getJobIdFromKey = function (jobKey)
17
+ return string.match(jobKey, ".*:(.*)")
18
+ end
19
+ local getJobKeyPrefix = function (jobKey, jobId)
20
+ return string.sub(jobKey, 0, #jobKey - #jobId)
21
+ end
22
+ --[[
23
+ Function to recursively check if there are no locks
24
+ on the jobs to be removed.
25
+ returns:
26
+ boolean
27
+ ]]
28
+ local function isLocked( prefix, jobId)
29
+ local jobKey = prefix .. jobId;
30
+ -- Check if this job is locked
31
+ local lockKey = jobKey .. ':lock'
32
+ local lock = rcall("GET", lockKey)
33
+ if not lock then
34
+ local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
35
+ if (#dependencies > 0) then
36
+ for i, childJobKey in ipairs(dependencies) do
37
+ -- We need to get the jobId for this job.
38
+ local childJobId = getJobIdFromKey(childJobKey)
39
+ local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
40
+ local result = isLocked( childJobPrefix, childJobId )
41
+ if result then
42
+ return true
43
+ end
44
+ end
45
+ end
46
+ return false
47
+ end
48
+ return true
49
+ end
50
+ --[[
51
+ Function to remove from any state.
52
+ returns:
53
+ prev state
54
+ ]]
55
+ local function removeJobFromAnyState( prefix, jobId)
56
+ if rcall("LREM", prefix .. "wait", 0, jobId) == 1 then
57
+ return "wait"
58
+ elseif rcall("LREM", prefix .. "paused", 0, jobId) == 1 then
59
+ return "paused"
60
+ elseif rcall("LREM", prefix .. "active", 0, jobId) == 1 then
61
+ return "active"
62
+ elseif rcall("ZREM", prefix .. "waiting-children", jobId) == 1 then
63
+ return "waiting-children"
64
+ elseif rcall("ZREM", prefix .. "delayed", jobId) == 1 then
65
+ return "delayed"
66
+ elseif rcall("ZREM", prefix .. "completed", jobId) == 1 then
67
+ return "completed"
68
+ elseif rcall("ZREM", prefix .. "failed", jobId) == 1 then
69
+ return "failed"
70
+ end
71
+ return "unknown"
72
+ end
73
+ --[[
74
+ Check if this job has a parent. If so we will just remove it from
75
+ the parent child list, but if it is the last child we should move the parent to "wait/paused"
76
+ which requires code from "moveToFinished"
77
+ ]]
78
+ --[[
79
+ Function to check for the meta.paused key to decide if we are paused or not
80
+ (since an empty list and !EXISTS are not really the same).
81
+ ]]
82
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
83
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
84
+ return waitKey
85
+ else
86
+ return pausedKey
87
+ end
88
+ end
89
+ local function moveParentToWait(parentPrefix, parentId, emitEvent)
90
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
91
+ rcall("RPUSH", parentTarget, parentId)
92
+ if emitEvent then
93
+ local parentEventStream = parentPrefix .. "events"
94
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
95
+ end
96
+ end
97
+ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
98
+ if parentKey then
99
+ local parentProcessedKey = parentKey .. ":processed"
100
+ rcall("HDEL", parentProcessedKey, jobKey)
101
+ local parentDependenciesKey = parentKey .. ":dependencies"
102
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
103
+ if result > 0 then
104
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
105
+ if pendingDependencies == 0 then
106
+ local parentId = getJobIdFromKey(parentKey)
107
+ local parentPrefix = getJobKeyPrefix(parentKey, parentId)
108
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
109
+ if numRemovedElements == 1 then
110
+ if hard then
111
+ if parentPrefix == baseKey then
112
+ removeParentDependencyKey(parentKey, hard, nil, baseKey)
113
+ rcall("DEL", parentKey, parentKey .. ':logs',
114
+ parentKey .. ':dependencies', parentKey .. ':processed')
115
+ else
116
+ moveParentToWait(parentPrefix, parentId)
117
+ end
118
+ else
119
+ moveParentToWait(parentPrefix, parentId, true)
120
+ end
121
+ end
122
+ end
123
+ end
124
+ else
125
+ local missedParentKey = rcall("HGET", jobKey, "parentKey")
126
+ if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
127
+ local parentProcessedKey = missedParentKey .. ":processed"
128
+ rcall("HDEL", parentProcessedKey, jobKey)
129
+ local parentDependenciesKey = missedParentKey .. ":dependencies"
130
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
131
+ if result > 0 then
132
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
133
+ if pendingDependencies == 0 then
134
+ local parentId = getJobIdFromKey(missedParentKey)
135
+ local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
136
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
137
+ if numRemovedElements == 1 then
138
+ if hard then
139
+ if parentPrefix == baseKey then
140
+ removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
141
+ rcall("DEL", missedParentKey, missedParentKey .. ':logs',
142
+ missedParentKey .. ':dependencies', missedParentKey .. ':processed')
143
+ else
144
+ moveParentToWait(parentPrefix, parentId)
145
+ end
146
+ else
147
+ moveParentToWait(parentPrefix, parentId, true)
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
155
+ local function removeJob( prefix, jobId, parentKey)
156
+ local jobKey = prefix .. jobId;
157
+ removeParentDependencyKey(jobKey, false, parentKey)
158
+ -- Check if this job has children
159
+ -- If so, we are going to try to remove the children recursively in deep first way because
160
+ -- if some job is locked we must exit with and error.
161
+ --local countProcessed = rcall("HLEN", jobKey .. ":processed")
162
+ local processed = rcall("HGETALL", jobKey .. ":processed")
163
+ if (#processed > 0) then
164
+ for i = 1, #processed, 2 do
165
+ local childJobId = getJobIdFromKey(processed[i])
166
+ local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
167
+ removeJob( childJobPrefix, childJobId, jobKey )
168
+ end
169
+ end
170
+ local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
171
+ if (#dependencies > 0) then
172
+ for i, childJobKey in ipairs(dependencies) do
173
+ -- We need to get the jobId for this job.
174
+ local childJobId = getJobIdFromKey(childJobKey)
175
+ local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
176
+ removeJob( childJobPrefix, childJobId, jobKey )
177
+ end
178
+ end
179
+ local prev = removeJobFromAnyState(prefix, jobId)
180
+ rcall("ZREM", prefix .. "priority", jobId)
181
+ rcall("DEL", jobKey, jobKey .. ":logs", jobKey .. ":dependencies", jobKey .. ":processed")
182
+ -- -- delete keys related to rate limiter
183
+ -- local limiterIndexTable = KEYS[10] .. ":index"
184
+ -- local limitedSetKey = rcall("HGET", limiterIndexTable, jobId)
185
+ -- if limitedSetKey then
186
+ -- rcall("SREM", limitedSetKey, jobId)
187
+ -- rcall("HDEL", limiterIndexTable, jobId)
188
+ -- end
189
+ rcall("XADD", prefix .. "events", "*", "event", "removed", "jobId", jobId, "prev", prev);
190
+ end
191
+ local prefix = KEYS[1]
192
+ if not isLocked(prefix, ARGV[1]) then
193
+ removeJob(prefix, ARGV[1])
194
+ return 1
195
+ end
196
+ return 0
197
+ `;
198
+ export const removeJob = {
199
+ name: 'removeJob',
200
+ content,
201
+ keys: 1,
202
+ };
203
+ //# sourceMappingURL=removeJob-1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeJob-1.js","sourceRoot":"","sources":["../../../src/scripts/removeJob-1.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMf,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW;IACjB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const removeRepeatable: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -1,21 +1,17 @@
1
-
2
- --[[
1
+ const content = `--[[
3
2
  Removes a repeatable job
4
3
  Input:
5
4
  KEYS[1] repeat jobs key
6
5
  KEYS[2] delayed jobs key
7
-
8
6
  ARGV[1] repeat job id
9
7
  ARGV[2] repeat job key
10
8
  ARGV[3] queue key
11
-
12
9
  Output:
13
10
  0 - OK
14
11
  1 - Missing repeat job
15
12
  ]]
16
13
  local rcall = redis.call
17
14
  local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
18
-
19
15
  if(millis) then
20
16
  -- Delete next programmed job.
21
17
  local repeatJobId = ARGV[1] .. millis
@@ -24,9 +20,14 @@ if(millis) then
24
20
  rcall("XADD", ARGV[3] .. "events", "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
25
21
  end
26
22
  end
27
-
28
23
  if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
29
24
  return 0
30
25
  end
31
-
32
26
  return 1
27
+ `;
28
+ export const removeRepeatable = {
29
+ name: 'removeRepeatable',
30
+ content,
31
+ keys: 2,
32
+ };
33
+ //# sourceMappingURL=removeRepeatable-2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeRepeatable-2.js","sourceRoot":"","sources":["../../../src/scripts/removeRepeatable-2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Bf,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,kBAAkB;IACxB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const reprocessJob: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };