bullmq 1.70.0 → 1.74.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 (63) hide show
  1. package/README.md +9 -0
  2. package/dist/bullmq.d.ts +58 -20
  3. package/dist/cjs/classes/child-processor.js.map +1 -1
  4. package/dist/cjs/classes/index.d.ts +1 -0
  5. package/dist/cjs/classes/index.js +1 -0
  6. package/dist/cjs/classes/index.js.map +1 -1
  7. package/dist/cjs/classes/job.d.ts +3 -2
  8. package/dist/cjs/classes/job.js +12 -8
  9. package/dist/cjs/classes/job.js.map +1 -1
  10. package/dist/cjs/classes/queue-getters.d.ts +9 -1
  11. package/dist/cjs/classes/queue-getters.js +34 -4
  12. package/dist/cjs/classes/queue-getters.js.map +1 -1
  13. package/dist/cjs/classes/queue-scheduler.d.ts +1 -0
  14. package/dist/cjs/classes/queue-scheduler.js +12 -0
  15. package/dist/cjs/classes/queue-scheduler.js.map +1 -1
  16. package/dist/cjs/classes/queue.d.ts +25 -10
  17. package/dist/cjs/classes/queue.js +6 -7
  18. package/dist/cjs/classes/queue.js.map +1 -1
  19. package/dist/cjs/classes/scripts.d.ts +4 -4
  20. package/dist/cjs/classes/scripts.js +7 -7
  21. package/dist/cjs/classes/scripts.js.map +1 -1
  22. package/dist/cjs/classes/timer-manager.d.ts +3 -3
  23. package/dist/cjs/classes/timer-manager.js +3 -3
  24. package/dist/cjs/classes/unrecoverable-error.d.ts +10 -0
  25. package/dist/cjs/classes/unrecoverable-error.js +19 -0
  26. package/dist/cjs/classes/unrecoverable-error.js.map +1 -0
  27. package/dist/cjs/commands/addJob-9.lua +2 -2
  28. package/dist/cjs/commands/includes/trimEvents.lua +12 -0
  29. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +2 -2
  30. package/dist/cjs/commands/moveToFinished-8.lua +2 -5
  31. package/dist/cjs/commands/retryJobs-4.lua +3 -2
  32. package/dist/cjs/types/job-json-sandbox.d.ts +1 -0
  33. package/dist/esm/classes/child-processor.js.map +1 -1
  34. package/dist/esm/classes/index.d.ts +1 -0
  35. package/dist/esm/classes/index.js +1 -0
  36. package/dist/esm/classes/index.js.map +1 -1
  37. package/dist/esm/classes/job.d.ts +3 -2
  38. package/dist/esm/classes/job.js +12 -8
  39. package/dist/esm/classes/job.js.map +1 -1
  40. package/dist/esm/classes/queue-getters.d.ts +9 -1
  41. package/dist/esm/classes/queue-getters.js +34 -4
  42. package/dist/esm/classes/queue-getters.js.map +1 -1
  43. package/dist/esm/classes/queue-scheduler.d.ts +1 -0
  44. package/dist/esm/classes/queue-scheduler.js +13 -1
  45. package/dist/esm/classes/queue-scheduler.js.map +1 -1
  46. package/dist/esm/classes/queue.d.ts +25 -10
  47. package/dist/esm/classes/queue.js +6 -7
  48. package/dist/esm/classes/queue.js.map +1 -1
  49. package/dist/esm/classes/scripts.d.ts +4 -4
  50. package/dist/esm/classes/scripts.js +7 -7
  51. package/dist/esm/classes/scripts.js.map +1 -1
  52. package/dist/esm/classes/timer-manager.d.ts +3 -3
  53. package/dist/esm/classes/timer-manager.js +3 -3
  54. package/dist/esm/classes/unrecoverable-error.d.ts +10 -0
  55. package/dist/esm/classes/unrecoverable-error.js +15 -0
  56. package/dist/esm/classes/unrecoverable-error.js.map +1 -0
  57. package/dist/esm/commands/addJob-9.lua +2 -2
  58. package/dist/esm/commands/includes/trimEvents.lua +12 -0
  59. package/dist/esm/commands/moveStalledJobsToWait-8.lua +2 -2
  60. package/dist/esm/commands/moveToFinished-8.lua +2 -5
  61. package/dist/esm/commands/retryJobs-4.lua +3 -2
  62. package/dist/esm/types/job-json-sandbox.d.ts +1 -0
  63. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ /**
2
+ * UnrecoverableError
3
+ *
4
+ * Error to move a job to failed even if the attemptsMade
5
+ * are lower than the expected limit.
6
+ *
7
+ */
8
+ export class UnrecoverableError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = this.constructor.name;
12
+ Object.setPrototypeOf(this, new.target.prototype);
13
+ }
14
+ }
15
+ //# sourceMappingURL=unrecoverable-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unrecoverable-error.js","sourceRoot":"","sources":["../../../src/classes/unrecoverable-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -57,6 +57,7 @@ local parentData
57
57
 
58
58
  -- Includes
59
59
  --- @include "includes/destructureJobKey"
60
+ --- @include "includes/trimEvents"
60
61
 
61
62
  if parentKey ~= nil then
62
63
  if rcall("EXISTS", parentKey) ~= 1 then
@@ -173,7 +174,6 @@ if parentDependenciesKey ~= nil then
173
174
  rcall("SADD", parentDependenciesKey, jobIdKey)
174
175
  end
175
176
 
176
- local maxEvents = rcall("HGET", KEYS[3], "opts.maxLenEvents")
177
- if (maxEvents) then rcall("XTRIM", KEYS[8], "MAXLEN", "~", maxEvents) end
177
+ trimEvents(KEYS[3], KEYS[8])
178
178
 
179
179
  return jobId .. "" -- convert to string
@@ -0,0 +1,12 @@
1
+ --[[
2
+ Function to trim events, default 10000.
3
+ ]]
4
+
5
+ local function trimEvents(metaKey, eventStreamKey)
6
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
7
+ if (maxEvents) then
8
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
9
+ else
10
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
11
+ end
12
+ end
@@ -25,6 +25,7 @@ local rcall = redis.call
25
25
 
26
26
  -- Includes
27
27
  --- @include "includes/batches"
28
+ --- @include "includes/trimEvents"
28
29
 
29
30
  -- Check if we need to check for stalled jobs now.
30
31
  if rcall("EXISTS", KEYS[5]) == 1 then return {{}, {}} end
@@ -96,7 +97,6 @@ if (#active > 0) then
96
97
  end
97
98
  end
98
99
 
99
- local maxEvents = rcall("HGET", KEYS[6], "opts.maxLenEvents")
100
- if maxEvents then rcall("XTRIM", KEYS[8], "MAXLEN", "~", maxEvents) end
100
+ trimEvents(KEYS[6], KEYS[8])
101
101
 
102
102
  return {failed, stalled}
@@ -47,6 +47,7 @@ local rcall = redis.call
47
47
  --- @include "includes/updateParentDepsIfNeeded"
48
48
  --- @include "includes/destructureJobKey"
49
49
  --- @include "includes/removeJob"
50
+ --- @include "includes/trimEvents"
50
51
 
51
52
  local jobIdKey = KEYS[3]
52
53
  if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
@@ -75,11 +76,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
75
76
  end
76
77
 
77
78
  -- Trim events before emiting them to avoid trimming events emitted in this script
78
- local maxEvents = rcall("HGET", KEYS[7], "opts.maxLenEvents")
79
- if (maxEvents == false) then
80
- maxEvents = 10000
81
- end
82
- rcall("XTRIM", KEYS[6], "MAXLEN", "~", maxEvents)
79
+ trimEvents(KEYS[7], KEYS[6])
83
80
 
84
81
  -- If job has a parent we need to
85
82
  -- 1) remove this job id from parents dependencies
@@ -8,6 +8,7 @@
8
8
  KEYS[4] wait state key
9
9
 
10
10
  ARGV[1] count
11
+ ARGV[2] timestamp
11
12
 
12
13
  Output:
13
14
  1 means the operation is not completed
@@ -15,6 +16,7 @@
15
16
  ]]
16
17
  local baseKey = KEYS[1]
17
18
  local maxCount = tonumber(ARGV[1])
19
+ local timestamp = tonumber(ARGV[2])
18
20
 
19
21
  local rcall = redis.call;
20
22
 
@@ -22,8 +24,7 @@ local rcall = redis.call;
22
24
  --- @include "includes/batches"
23
25
  --- @include "includes/getZSetItems"
24
26
 
25
- local jobs = getZSetItems(KEYS[3], maxCount)
26
-
27
+ local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
27
28
  if (#jobs > 0) then
28
29
  for i, key in ipairs(jobs) do
29
30
  local jobKey = baseKey .. key
@@ -2,4 +2,5 @@ import { JobJson, ParentKeys } from '../interfaces';
2
2
  export declare type JobJsonSandbox = JobJson & {
3
3
  queueName: string;
4
4
  parent?: ParentKeys;
5
+ prefix: string;
5
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "1.70.0",
3
+ "version": "1.74.0",
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",