bullmq 5.41.7 → 5.41.9

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 (86) hide show
  1. package/dist/cjs/classes/job-scheduler.js +11 -18
  2. package/dist/cjs/classes/job-scheduler.js.map +1 -1
  3. package/dist/cjs/classes/job.js +1 -0
  4. package/dist/cjs/classes/job.js.map +1 -1
  5. package/dist/cjs/classes/scripts.js +28 -2
  6. package/dist/cjs/classes/scripts.js.map +1 -1
  7. package/dist/cjs/commands/addJobScheduler-10.lua +9 -37
  8. package/dist/cjs/commands/addRepeatableJob-2.lua +2 -2
  9. package/dist/cjs/commands/getState-8.lua +5 -5
  10. package/dist/cjs/commands/getStateV2-8.lua +8 -8
  11. package/dist/cjs/commands/includes/addJobFromScheduler.lua +41 -0
  12. package/dist/cjs/commands/includes/isJobSchedulerJob.lua +1 -1
  13. package/dist/cjs/commands/includes/trimEvents.lua +1 -1
  14. package/dist/cjs/commands/includes/updateExistingJobsParent.lua +1 -1
  15. package/dist/cjs/commands/isFinished-3.lua +2 -2
  16. package/dist/cjs/commands/{updateJobScheduler-7.lua → updateJobScheduler-11.lua} +28 -21
  17. package/dist/cjs/commands/updateRepeatableJobMillis-1.lua +1 -1
  18. package/dist/cjs/scripts/addDelayedJob-6.js +1 -1
  19. package/dist/cjs/scripts/addJobScheduler-10.js +94 -84
  20. package/dist/cjs/scripts/addJobScheduler-10.js.map +1 -1
  21. package/dist/cjs/scripts/addParentJob-4.js +1 -1
  22. package/dist/cjs/scripts/addPrioritizedJob-8.js +1 -1
  23. package/dist/cjs/scripts/addRepeatableJob-2.js +2 -2
  24. package/dist/cjs/scripts/addStandardJob-8.js +1 -1
  25. package/dist/cjs/scripts/cleanJobsInSet-3.js +1 -1
  26. package/dist/cjs/scripts/getState-8.js +5 -5
  27. package/dist/cjs/scripts/getStateV2-8.js +8 -8
  28. package/dist/cjs/scripts/index.js +1 -1
  29. package/dist/cjs/scripts/index.js.map +1 -1
  30. package/dist/cjs/scripts/isFinished-3.js +2 -2
  31. package/dist/cjs/scripts/moveStalledJobsToWait-9.js +1 -1
  32. package/dist/cjs/scripts/moveToFinished-14.js +1 -1
  33. package/dist/cjs/scripts/removeJob-3.js +1 -1
  34. package/dist/cjs/scripts/updateJobScheduler-11.js +246 -0
  35. package/dist/cjs/scripts/updateJobScheduler-11.js.map +1 -0
  36. package/dist/cjs/scripts/updateRepeatableJobMillis-1.js +1 -1
  37. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  38. package/dist/cjs/version.js +1 -1
  39. package/dist/esm/classes/job-scheduler.js +11 -18
  40. package/dist/esm/classes/job-scheduler.js.map +1 -1
  41. package/dist/esm/classes/job.js +1 -0
  42. package/dist/esm/classes/job.js.map +1 -1
  43. package/dist/esm/classes/scripts.d.ts +1 -1
  44. package/dist/esm/classes/scripts.js +28 -2
  45. package/dist/esm/classes/scripts.js.map +1 -1
  46. package/dist/esm/commands/addJobScheduler-10.lua +9 -37
  47. package/dist/esm/commands/addRepeatableJob-2.lua +2 -2
  48. package/dist/esm/commands/getState-8.lua +5 -5
  49. package/dist/esm/commands/getStateV2-8.lua +8 -8
  50. package/dist/esm/commands/includes/addJobFromScheduler.lua +41 -0
  51. package/dist/esm/commands/includes/isJobSchedulerJob.lua +1 -1
  52. package/dist/esm/commands/includes/trimEvents.lua +1 -1
  53. package/dist/esm/commands/includes/updateExistingJobsParent.lua +1 -1
  54. package/dist/esm/commands/isFinished-3.lua +2 -2
  55. package/dist/esm/commands/{updateJobScheduler-7.lua → updateJobScheduler-11.lua} +28 -21
  56. package/dist/esm/commands/updateRepeatableJobMillis-1.lua +1 -1
  57. package/dist/esm/interfaces/job-json.d.ts +1 -0
  58. package/dist/esm/scripts/addDelayedJob-6.js +1 -1
  59. package/dist/esm/scripts/addJobScheduler-10.js +94 -84
  60. package/dist/esm/scripts/addJobScheduler-10.js.map +1 -1
  61. package/dist/esm/scripts/addParentJob-4.js +1 -1
  62. package/dist/esm/scripts/addPrioritizedJob-8.js +1 -1
  63. package/dist/esm/scripts/addRepeatableJob-2.js +2 -2
  64. package/dist/esm/scripts/addStandardJob-8.js +1 -1
  65. package/dist/esm/scripts/cleanJobsInSet-3.js +1 -1
  66. package/dist/esm/scripts/getState-8.js +5 -5
  67. package/dist/esm/scripts/getStateV2-8.js +8 -8
  68. package/dist/esm/scripts/index.d.ts +1 -1
  69. package/dist/esm/scripts/index.js +1 -1
  70. package/dist/esm/scripts/index.js.map +1 -1
  71. package/dist/esm/scripts/isFinished-3.js +2 -2
  72. package/dist/esm/scripts/moveStalledJobsToWait-9.js +1 -1
  73. package/dist/esm/scripts/moveToFinished-14.js +1 -1
  74. package/dist/esm/scripts/removeJob-3.js +1 -1
  75. package/dist/esm/scripts/updateJobScheduler-11.js +243 -0
  76. package/dist/esm/scripts/updateJobScheduler-11.js.map +1 -0
  77. package/dist/esm/scripts/updateRepeatableJobMillis-1.js +1 -1
  78. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  79. package/dist/esm/version.d.ts +1 -1
  80. package/dist/esm/version.js +1 -1
  81. package/package.json +1 -1
  82. package/dist/cjs/scripts/updateJobScheduler-7.js +0 -144
  83. package/dist/cjs/scripts/updateJobScheduler-7.js.map +0 -1
  84. package/dist/esm/scripts/updateJobScheduler-7.js +0 -141
  85. package/dist/esm/scripts/updateJobScheduler-7.js.map +0 -1
  86. /package/dist/esm/scripts/{updateJobScheduler-7.d.ts → updateJobScheduler-11.d.ts} +0 -0
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateJobScheduler = void 0;
4
- const content = `--[[
5
- Updates a job scheduler and adds next delayed job
6
- Input:
7
- KEYS[1] 'marker',
8
- KEYS[2] 'meta'
9
- KEYS[3] 'id'
10
- KEYS[4] 'delayed'
11
- KEYS[5] events stream key
12
- KEYS[6] 'repeat' key
13
- KEYS[7] producer key
14
- ARGV[1] next milliseconds
15
- ARGV[2] jobs scheduler id
16
- ARGV[3] Json stringified delayed data
17
- ARGV[4] msgpacked delayed opts
18
- ARGV[5] timestamp
19
- ARGV[6] prefix key
20
- ARGV[7] producer id
21
- Output:
22
- next delayed job id - OK
23
- ]]
24
- local rcall = redis.call
25
- local repeatKey = KEYS[6]
26
- local delayedKey = KEYS[4]
27
- local nextMillis = ARGV[1]
28
- local jobSchedulerId = ARGV[2]
29
- local timestamp = ARGV[5]
30
- local prefixKey = ARGV[6]
31
- local producerId = ARGV[7]
32
- -- Includes
33
- --[[
34
- Adds a delayed job to the queue by doing the following:
35
- - Creates a new job key with the job data.
36
- - adds to delayed zset.
37
- - Emits a global event 'delayed' if the job is delayed.
38
- ]]
39
- -- Includes
40
- --[[
41
- Add delay marker if needed.
42
- ]]
43
- -- Includes
44
- --[[
45
- Function to return the next delayed job timestamp.
46
- ]]
47
- local function getNextDelayedTimestamp(delayedKey)
48
- local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
49
- if #result then
50
- local nextTimestamp = tonumber(result[2])
51
- if nextTimestamp ~= nil then
52
- return nextTimestamp / 0x1000
53
- end
54
- end
55
- end
56
- local function addDelayMarkerIfNeeded(markerKey, delayedKey)
57
- local nextTimestamp = getNextDelayedTimestamp(delayedKey)
58
- if nextTimestamp ~= nil then
59
- -- Replace the score of the marker with the newest known
60
- -- next timestamp.
61
- rcall("ZADD", markerKey, nextTimestamp, "1")
62
- end
63
- end
64
- --[[
65
- Bake in the job id first 12 bits into the timestamp
66
- to guarantee correct execution order of delayed jobs
67
- (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
68
- WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
69
- ]]
70
- local function getDelayedScore(delayedKey, timestamp, delay)
71
- local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
72
- local minScore = delayedTimestamp * 0x1000
73
- local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
74
- local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
75
- minScore, "WITHSCORES","LIMIT", 0, 1)
76
- if #result then
77
- local currentMaxScore = tonumber(result[2])
78
- if currentMaxScore ~= nil then
79
- if currentMaxScore >= maxScore then
80
- return maxScore, delayedTimestamp
81
- else
82
- return currentMaxScore + 1, delayedTimestamp
83
- end
84
- end
85
- end
86
- return minScore, delayedTimestamp
87
- end
88
- local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
89
- maxEvents, markerKey, delay)
90
- local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
91
- rcall("ZADD", delayedKey, score, jobId)
92
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
93
- "jobId", jobId, "delay", delayedTimestamp)
94
- -- mark that a delayed job is available
95
- addDelayMarkerIfNeeded(markerKey, delayedKey)
96
- end
97
- --[[
98
- Function to get max events value or set by default 10000.
99
- ]]
100
- local function getOrSetMaxEvents(metaKey)
101
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
102
- if not maxEvents then
103
- maxEvents = 10000
104
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
105
- end
106
- return maxEvents
107
- end
108
- local schedulerKey = repeatKey .. ":" .. jobSchedulerId
109
- local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
110
- local nextDelayedJobKey = schedulerKey .. ":" .. nextMillis
111
- -- Validate that scheduler exists.
112
- local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
113
- if prevMillis ~= false then
114
- local currentDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
115
- if producerId == currentDelayedJobId then
116
- local schedulerAttributes = rcall("HMGET", schedulerKey, "name", "data")
117
- rcall("ZADD", repeatKey, nextMillis, jobSchedulerId)
118
- rcall("HINCRBY", schedulerKey, "ic", 1)
119
- local eventsKey = KEYS[5]
120
- local metaKey = KEYS[2]
121
- local maxEvents = getOrSetMaxEvents(metaKey)
122
- rcall("INCR", KEYS[3])
123
- local delayedOpts = cmsgpack.unpack(ARGV[4])
124
- -- TODO: remove this workaround in next breaking change,
125
- -- all job-schedulers must save job data
126
- local templateData = schedulerAttributes[2] or ARGV[3]
127
- if templateData and templateData ~= '{}' then
128
- rcall("HSET", schedulerKey, "data", templateData)
129
- end
130
- addDelayedJob(nextDelayedJobKey, nextDelayedJobId, delayedKey, eventsKey, schedulerAttributes[1],
131
- templateData or '{}', delayedOpts, timestamp, jobSchedulerId, maxEvents, KEYS[1], nil, nil)
132
- if KEYS[7] ~= "" then
133
- rcall("HSET", KEYS[7], "nrjid", nextDelayedJobId)
134
- end
135
- return nextDelayedJobId .. "" -- convert to string
136
- end
137
- end
138
- `;
139
- exports.updateJobScheduler = {
140
- name: 'updateJobScheduler',
141
- content,
142
- keys: 7,
143
- };
144
- //# sourceMappingURL=updateJobScheduler-7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateJobScheduler-7.js","sourceRoot":"","sources":["../../../src/scripts/updateJobScheduler-7.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIf,CAAC;AACW,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,oBAAoB;IAC1B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -1,141 +0,0 @@
1
- const content = `--[[
2
- Updates a job scheduler and adds next delayed job
3
- Input:
4
- KEYS[1] 'marker',
5
- KEYS[2] 'meta'
6
- KEYS[3] 'id'
7
- KEYS[4] 'delayed'
8
- KEYS[5] events stream key
9
- KEYS[6] 'repeat' key
10
- KEYS[7] producer key
11
- ARGV[1] next milliseconds
12
- ARGV[2] jobs scheduler id
13
- ARGV[3] Json stringified delayed data
14
- ARGV[4] msgpacked delayed opts
15
- ARGV[5] timestamp
16
- ARGV[6] prefix key
17
- ARGV[7] producer id
18
- Output:
19
- next delayed job id - OK
20
- ]]
21
- local rcall = redis.call
22
- local repeatKey = KEYS[6]
23
- local delayedKey = KEYS[4]
24
- local nextMillis = ARGV[1]
25
- local jobSchedulerId = ARGV[2]
26
- local timestamp = ARGV[5]
27
- local prefixKey = ARGV[6]
28
- local producerId = ARGV[7]
29
- -- Includes
30
- --[[
31
- Adds a delayed job to the queue by doing the following:
32
- - Creates a new job key with the job data.
33
- - adds to delayed zset.
34
- - Emits a global event 'delayed' if the job is delayed.
35
- ]]
36
- -- Includes
37
- --[[
38
- Add delay marker if needed.
39
- ]]
40
- -- Includes
41
- --[[
42
- Function to return the next delayed job timestamp.
43
- ]]
44
- local function getNextDelayedTimestamp(delayedKey)
45
- local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
46
- if #result then
47
- local nextTimestamp = tonumber(result[2])
48
- if nextTimestamp ~= nil then
49
- return nextTimestamp / 0x1000
50
- end
51
- end
52
- end
53
- local function addDelayMarkerIfNeeded(markerKey, delayedKey)
54
- local nextTimestamp = getNextDelayedTimestamp(delayedKey)
55
- if nextTimestamp ~= nil then
56
- -- Replace the score of the marker with the newest known
57
- -- next timestamp.
58
- rcall("ZADD", markerKey, nextTimestamp, "1")
59
- end
60
- end
61
- --[[
62
- Bake in the job id first 12 bits into the timestamp
63
- to guarantee correct execution order of delayed jobs
64
- (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
65
- WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
66
- ]]
67
- local function getDelayedScore(delayedKey, timestamp, delay)
68
- local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
69
- local minScore = delayedTimestamp * 0x1000
70
- local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
71
- local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
72
- minScore, "WITHSCORES","LIMIT", 0, 1)
73
- if #result then
74
- local currentMaxScore = tonumber(result[2])
75
- if currentMaxScore ~= nil then
76
- if currentMaxScore >= maxScore then
77
- return maxScore, delayedTimestamp
78
- else
79
- return currentMaxScore + 1, delayedTimestamp
80
- end
81
- end
82
- end
83
- return minScore, delayedTimestamp
84
- end
85
- local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
86
- maxEvents, markerKey, delay)
87
- local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
88
- rcall("ZADD", delayedKey, score, jobId)
89
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
90
- "jobId", jobId, "delay", delayedTimestamp)
91
- -- mark that a delayed job is available
92
- addDelayMarkerIfNeeded(markerKey, delayedKey)
93
- end
94
- --[[
95
- Function to get max events value or set by default 10000.
96
- ]]
97
- local function getOrSetMaxEvents(metaKey)
98
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
99
- if not maxEvents then
100
- maxEvents = 10000
101
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
102
- end
103
- return maxEvents
104
- end
105
- local schedulerKey = repeatKey .. ":" .. jobSchedulerId
106
- local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
107
- local nextDelayedJobKey = schedulerKey .. ":" .. nextMillis
108
- -- Validate that scheduler exists.
109
- local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
110
- if prevMillis ~= false then
111
- local currentDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
112
- if producerId == currentDelayedJobId then
113
- local schedulerAttributes = rcall("HMGET", schedulerKey, "name", "data")
114
- rcall("ZADD", repeatKey, nextMillis, jobSchedulerId)
115
- rcall("HINCRBY", schedulerKey, "ic", 1)
116
- local eventsKey = KEYS[5]
117
- local metaKey = KEYS[2]
118
- local maxEvents = getOrSetMaxEvents(metaKey)
119
- rcall("INCR", KEYS[3])
120
- local delayedOpts = cmsgpack.unpack(ARGV[4])
121
- -- TODO: remove this workaround in next breaking change,
122
- -- all job-schedulers must save job data
123
- local templateData = schedulerAttributes[2] or ARGV[3]
124
- if templateData and templateData ~= '{}' then
125
- rcall("HSET", schedulerKey, "data", templateData)
126
- end
127
- addDelayedJob(nextDelayedJobKey, nextDelayedJobId, delayedKey, eventsKey, schedulerAttributes[1],
128
- templateData or '{}', delayedOpts, timestamp, jobSchedulerId, maxEvents, KEYS[1], nil, nil)
129
- if KEYS[7] ~= "" then
130
- rcall("HSET", KEYS[7], "nrjid", nextDelayedJobId)
131
- end
132
- return nextDelayedJobId .. "" -- convert to string
133
- end
134
- end
135
- `;
136
- export const updateJobScheduler = {
137
- name: 'updateJobScheduler',
138
- content,
139
- keys: 7,
140
- };
141
- //# sourceMappingURL=updateJobScheduler-7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateJobScheduler-7.js","sourceRoot":"","sources":["../../../src/scripts/updateJobScheduler-7.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIf,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,oBAAoB;IAC1B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}