bullmq 1.67.3 → 1.68.3

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 (48) hide show
  1. package/dist/bullmq.d.ts +17 -1
  2. package/dist/cjs/classes/job.d.ts +2 -1
  3. package/dist/cjs/classes/job.js +3 -3
  4. package/dist/cjs/classes/job.js.map +1 -1
  5. package/dist/cjs/classes/queue.d.ts +9 -0
  6. package/dist/cjs/classes/queue.js +13 -1
  7. package/dist/cjs/classes/queue.js.map +1 -1
  8. package/dist/cjs/classes/scripts.d.ts +3 -0
  9. package/dist/cjs/classes/scripts.js +25 -4
  10. package/dist/cjs/classes/scripts.js.map +1 -1
  11. package/dist/cjs/commands/cleanJobsInSet-2.lua +1 -2
  12. package/dist/cjs/commands/drain-4.lua +2 -0
  13. package/dist/cjs/commands/includes/batches.lua +18 -0
  14. package/dist/cjs/commands/includes/removeJobs.lua +9 -5
  15. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +8 -8
  16. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +2 -12
  17. package/dist/cjs/commands/moveToFinished-8.lua +1 -3
  18. package/dist/cjs/commands/obliterate-2.lua +4 -8
  19. package/dist/cjs/commands/promote-5.lua +1 -1
  20. package/dist/cjs/commands/removeJob-1.lua +1 -3
  21. package/dist/cjs/commands/retryJobs-4.lua +51 -0
  22. package/dist/cjs/commands/updateData-1.lua +16 -0
  23. package/dist/cjs/commands/updateProgress-2.lua +9 -10
  24. package/dist/cjs/interfaces/flow-job.d.ts +3 -0
  25. package/dist/esm/classes/job.d.ts +2 -1
  26. package/dist/esm/classes/job.js +3 -3
  27. package/dist/esm/classes/job.js.map +1 -1
  28. package/dist/esm/classes/queue.d.ts +9 -0
  29. package/dist/esm/classes/queue.js +13 -1
  30. package/dist/esm/classes/queue.js.map +1 -1
  31. package/dist/esm/classes/scripts.d.ts +3 -0
  32. package/dist/esm/classes/scripts.js +25 -4
  33. package/dist/esm/classes/scripts.js.map +1 -1
  34. package/dist/esm/commands/cleanJobsInSet-2.lua +1 -2
  35. package/dist/esm/commands/drain-4.lua +2 -0
  36. package/dist/esm/commands/includes/batches.lua +18 -0
  37. package/dist/esm/commands/includes/removeJobs.lua +9 -5
  38. package/dist/esm/commands/includes/removeParentDependencyKey.lua +8 -8
  39. package/dist/esm/commands/moveStalledJobsToWait-8.lua +2 -12
  40. package/dist/esm/commands/moveToFinished-8.lua +1 -3
  41. package/dist/esm/commands/obliterate-2.lua +4 -8
  42. package/dist/esm/commands/promote-5.lua +1 -1
  43. package/dist/esm/commands/removeJob-1.lua +1 -3
  44. package/dist/esm/commands/retryJobs-4.lua +51 -0
  45. package/dist/esm/commands/updateData-1.lua +16 -0
  46. package/dist/esm/commands/updateProgress-2.lua +9 -10
  47. package/dist/esm/interfaces/flow-job.d.ts +3 -0
  48. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ --[[
2
+ Attempts to retry all failed jobs
3
+
4
+ Input:
5
+ KEYS[1] base key
6
+ KEYS[2] events stream
7
+ KEYS[3] failed state key
8
+ KEYS[4] wait state key
9
+
10
+ ARGV[1] count
11
+
12
+ Output:
13
+ 1 means the operation is not completed
14
+ 0 means the operation is completed
15
+ ]]
16
+ local baseKey = KEYS[1]
17
+ local maxCount = tonumber(ARGV[1])
18
+
19
+ local rcall = redis.call;
20
+
21
+ -- Includes
22
+ --- @include "includes/batches"
23
+
24
+ local function getZSetItems(keyName, max)
25
+ return rcall('ZRANGE', keyName, 0, max - 1)
26
+ end
27
+
28
+ local jobs = getZSetItems(KEYS[3], maxCount)
29
+
30
+ if (#jobs > 0) then
31
+ for i, key in ipairs(jobs) do
32
+ local jobKey = baseKey .. key
33
+ rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason")
34
+
35
+ -- Emit waiting event
36
+ rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key);
37
+ end
38
+
39
+ for from, to in batches(#jobs, 7000) do
40
+ rcall("ZREM", KEYS[3], unpack(jobs, from, to))
41
+ rcall("LPUSH", KEYS[4], unpack(jobs, from, to))
42
+ end
43
+ end
44
+
45
+ maxCount = maxCount - #jobs
46
+
47
+ if(maxCount <= 0) then
48
+ return 1
49
+ end
50
+
51
+ return 0
@@ -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
@@ -1,15 +1,15 @@
1
1
  --[[
2
2
  Update job progress
3
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)
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
13
  ]]
14
14
  local rcall = redis.call
15
15
 
@@ -20,4 +20,3 @@ if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
20
20
  else
21
21
  return -1
22
22
  end
23
-
@@ -10,5 +10,8 @@ export interface FlowJob {
10
10
  }
11
11
  export declare type FlowQueuesOpts = Record<string, Omit<QueueOptions, 'connection' | 'prefix'>>;
12
12
  export interface FlowOpts {
13
+ /**
14
+ * Map of options for Queue classes.
15
+ */
13
16
  queuesOptions: FlowQueuesOpts;
14
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "1.67.3",
3
+ "version": "1.68.3",
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",