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,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
@@ -184,10 +184,13 @@ end
184
184
  --[[
185
185
  Function to recursively move from waitingChildren to failed.
186
186
  ]]
187
- local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobId, timestamp)
187
+ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
188
188
  if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
189
189
  rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
190
- rcall("HMSET", parentKey, "failedReason", "child " .. jobId .. " failed", "finishedOn", timestamp)
190
+ local failedReason = "child " .. jobIdKey .. " failed"
191
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
192
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
193
+ failedReason, "prev", "waiting-children")
191
194
  local rawParentData = rcall("HGET", parentKey, "parent")
192
195
  if rawParentData ~= false then
193
196
  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;AACF,MAAM,CAAC,MAAM,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;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "Queue for messages and jobs based on Redis",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -19,7 +19,7 @@
19
19
  "dist"
20
20
  ],
21
21
  "scripts": {
22
- "build": "npm-run-all pretest tsc:all clean:temp:files",
22
+ "build": "npm-run-all pretest tsc:all clean:temp:files copy:lua copy:includes:lua",
23
23
  "clean:temp:files": "rimraf dist/cjs/bullmq.d.ts dist/esm/bullmq.d.ts dist/tsdoc-metadata.json",
24
24
  "copy:lua": "copyfiles -f ./src/commands/*.lua ./dist/cjs/commands && copyfiles -f ./src/commands/*.lua ./dist/esm/commands",
25
25
  "copy:includes:lua": "copyfiles -f ./src/commands/includes/*.lua ./dist/cjs/commands/includes && copyfiles -f ./src/commands/includes/*.lua ./dist/esm/commands/includes",