bullmq 5.41.5 → 5.41.6

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 +40 -15
  2. package/dist/cjs/classes/job-scheduler.js.map +1 -1
  3. package/dist/cjs/classes/job.js +9 -12
  4. package/dist/cjs/classes/job.js.map +1 -1
  5. package/dist/cjs/classes/scripts.js +11 -1
  6. package/dist/cjs/classes/scripts.js.map +1 -1
  7. package/dist/cjs/commands/addDelayedJob-6.lua +5 -2
  8. package/dist/cjs/commands/addJobScheduler-10.lua +130 -0
  9. package/dist/cjs/commands/includes/addDelayedJob.lua +2 -7
  10. package/dist/cjs/commands/includes/getOrSetMaxEvents.lua +6 -6
  11. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +47 -2
  12. package/dist/cjs/commands/moveStalledJobsToWait-9.lua +1 -1
  13. package/dist/cjs/commands/moveToFinished-14.lua +1 -1
  14. package/dist/cjs/scripts/addDelayedJob-6.js +41 -43
  15. package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
  16. package/dist/cjs/scripts/{addJobScheduler-6.js → addJobScheduler-10.js} +208 -42
  17. package/dist/cjs/scripts/addJobScheduler-10.js.map +1 -0
  18. package/dist/cjs/scripts/addParentJob-4.js +6 -6
  19. package/dist/cjs/scripts/addPrioritizedJob-8.js +6 -6
  20. package/dist/cjs/scripts/addStandardJob-8.js +6 -6
  21. package/dist/cjs/scripts/changeDelay-4.js +6 -6
  22. package/dist/cjs/scripts/index.js +1 -1
  23. package/dist/cjs/scripts/index.js.map +1 -1
  24. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +6 -6
  25. package/dist/cjs/scripts/moveJobsToWait-8.js +6 -6
  26. package/dist/cjs/scripts/moveStalledJobsToWait-9.js +49 -9
  27. package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
  28. package/dist/cjs/scripts/moveToDelayed-8.js +6 -6
  29. package/dist/cjs/scripts/moveToFinished-14.js +49 -9
  30. package/dist/cjs/scripts/moveToFinished-14.js.map +1 -1
  31. package/dist/cjs/scripts/removeJob-3.js +6 -6
  32. package/dist/cjs/scripts/reprocessJob-8.js +6 -6
  33. package/dist/cjs/scripts/retryJob-11.js +6 -6
  34. package/dist/cjs/scripts/updateJobScheduler-7.js +8 -41
  35. package/dist/cjs/scripts/updateJobScheduler-7.js.map +1 -1
  36. package/dist/cjs/scripts/updateProgress-3.js +6 -6
  37. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  38. package/dist/cjs/version.js +1 -1
  39. package/dist/esm/classes/job-scheduler.d.ts +1 -0
  40. package/dist/esm/classes/job-scheduler.js +40 -15
  41. package/dist/esm/classes/job-scheduler.js.map +1 -1
  42. package/dist/esm/classes/job.js +9 -12
  43. package/dist/esm/classes/job.js.map +1 -1
  44. package/dist/esm/classes/scripts.d.ts +2 -2
  45. package/dist/esm/classes/scripts.js +11 -1
  46. package/dist/esm/classes/scripts.js.map +1 -1
  47. package/dist/esm/commands/addDelayedJob-6.lua +5 -2
  48. package/dist/esm/commands/addJobScheduler-10.lua +130 -0
  49. package/dist/esm/commands/includes/addDelayedJob.lua +2 -7
  50. package/dist/esm/commands/includes/getOrSetMaxEvents.lua +6 -6
  51. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +47 -2
  52. package/dist/esm/commands/moveStalledJobsToWait-9.lua +1 -1
  53. package/dist/esm/commands/moveToFinished-14.lua +1 -1
  54. package/dist/esm/scripts/addDelayedJob-6.js +41 -43
  55. package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
  56. package/dist/esm/scripts/{addJobScheduler-6.js → addJobScheduler-10.js} +208 -42
  57. package/dist/esm/scripts/addJobScheduler-10.js.map +1 -0
  58. package/dist/esm/scripts/addParentJob-4.js +6 -6
  59. package/dist/esm/scripts/addPrioritizedJob-8.js +6 -6
  60. package/dist/esm/scripts/addStandardJob-8.js +6 -6
  61. package/dist/esm/scripts/changeDelay-4.js +6 -6
  62. package/dist/esm/scripts/index.d.ts +1 -1
  63. package/dist/esm/scripts/index.js +1 -1
  64. package/dist/esm/scripts/index.js.map +1 -1
  65. package/dist/esm/scripts/moveJobFromActiveToWait-9.js +6 -6
  66. package/dist/esm/scripts/moveJobsToWait-8.js +6 -6
  67. package/dist/esm/scripts/moveStalledJobsToWait-9.js +49 -9
  68. package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
  69. package/dist/esm/scripts/moveToDelayed-8.js +6 -6
  70. package/dist/esm/scripts/moveToFinished-14.js +49 -9
  71. package/dist/esm/scripts/moveToFinished-14.js.map +1 -1
  72. package/dist/esm/scripts/removeJob-3.js +6 -6
  73. package/dist/esm/scripts/reprocessJob-8.js +6 -6
  74. package/dist/esm/scripts/retryJob-11.js +6 -6
  75. package/dist/esm/scripts/updateJobScheduler-7.js +8 -41
  76. package/dist/esm/scripts/updateJobScheduler-7.js.map +1 -1
  77. package/dist/esm/scripts/updateProgress-3.js +6 -6
  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/commands/addJobScheduler-6.lua +0 -72
  83. package/dist/cjs/scripts/addJobScheduler-6.js.map +0 -1
  84. package/dist/esm/commands/addJobScheduler-6.lua +0 -72
  85. package/dist/esm/scripts/addJobScheduler-6.js.map +0 -1
  86. /package/dist/esm/scripts/{addJobScheduler-6.d.ts → addJobScheduler-10.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addJobScheduler-10.js","sourceRoot":"","sources":["../../../src/scripts/addJobScheduler-10.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyaf,CAAC;AACW,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,iBAAiB;IACvB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -71,12 +71,12 @@ end
71
71
  Function to get max events value or set by default 10000.
72
72
  ]]
73
73
  local function getOrSetMaxEvents(metaKey)
74
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
75
- if not maxEvents then
76
- maxEvents = 10000
77
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
78
- end
79
- return maxEvents
74
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
75
+ if not maxEvents then
76
+ maxEvents = 10000
77
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
78
+ end
79
+ return maxEvents
80
80
  end
81
81
  --[[
82
82
  Function to handle the case when job is duplicated.
@@ -133,12 +133,12 @@ end
133
133
  Function to get max events value or set by default 10000.
134
134
  ]]
135
135
  local function getOrSetMaxEvents(metaKey)
136
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
137
- if not maxEvents then
138
- maxEvents = 10000
139
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
140
- end
141
- return maxEvents
136
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
137
+ if not maxEvents then
138
+ maxEvents = 10000
139
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
140
+ end
141
+ return maxEvents
142
142
  end
143
143
  --[[
144
144
  Function to handle the case when job is duplicated.
@@ -97,12 +97,12 @@ end
97
97
  Function to get max events value or set by default 10000.
98
98
  ]]
99
99
  local function getOrSetMaxEvents(metaKey)
100
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
101
- if not maxEvents then
102
- maxEvents = 10000
103
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
104
- end
105
- return maxEvents
100
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
101
+ if not maxEvents then
102
+ maxEvents = 10000
103
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
104
+ end
105
+ return maxEvents
106
106
  end
107
107
  --[[
108
108
  Function to check for the meta.paused key to decide if we are paused or not
@@ -73,12 +73,12 @@ end
73
73
  Function to get max events value or set by default 10000.
74
74
  ]]
75
75
  local function getOrSetMaxEvents(metaKey)
76
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
77
- if not maxEvents then
78
- maxEvents = 10000
79
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
80
- end
81
- return maxEvents
76
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
77
+ if not maxEvents then
78
+ maxEvents = 10000
79
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
80
+ end
81
+ return maxEvents
82
82
  end
83
83
  if rcall("EXISTS", ARGV[4]) == 1 then
84
84
  local jobId = ARGV[3]
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./addDelayedJob-6"), exports);
5
- tslib_1.__exportStar(require("./addJobScheduler-6"), exports);
5
+ tslib_1.__exportStar(require("./addJobScheduler-10"), exports);
6
6
  tslib_1.__exportStar(require("./addLog-2"), exports);
7
7
  tslib_1.__exportStar(require("./addParentJob-4"), exports);
8
8
  tslib_1.__exportStar(require("./addPrioritizedJob-8"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,8DAAoC;AACpC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,0DAAgC;AAChC,wDAA8B;AAC9B,mEAAyC;AACzC,8DAAoC;AACpC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,sEAA4C;AAC5C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,iEAAuC;AACvC,6DAAmC;AACnC,wEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,+DAAqC;AACrC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,0DAAgC;AAChC,wDAA8B;AAC9B,mEAAyC;AACzC,8DAAoC;AACpC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,sEAA4C;AAC5C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,iEAAuC;AACvC,6DAAmC;AACnC,wEAA8C"}
@@ -48,12 +48,12 @@ end
48
48
  Function to get max events value or set by default 10000.
49
49
  ]]
50
50
  local function getOrSetMaxEvents(metaKey)
51
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
52
- if not maxEvents then
53
- maxEvents = 10000
54
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
55
- end
56
- return maxEvents
51
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
52
+ if not maxEvents then
53
+ maxEvents = 10000
54
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
55
+ end
56
+ return maxEvents
57
57
  end
58
58
  --[[
59
59
  Function to check for the meta.paused key to decide if we are paused or not
@@ -52,12 +52,12 @@ end
52
52
  Function to get max events value or set by default 10000.
53
53
  ]]
54
54
  local function getOrSetMaxEvents(metaKey)
55
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
56
- if not maxEvents then
57
- maxEvents = 10000
58
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
59
- end
60
- return maxEvents
55
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
56
+ if not maxEvents then
57
+ maxEvents = 10000
58
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
59
+ end
60
+ return maxEvents
61
61
  end
62
62
  --[[
63
63
  Function to check for the meta.paused key to decide if we are paused or not
@@ -361,8 +361,11 @@ local function removeJobsOnFail(queueKeyPrefix, failedKey, jobId, opts, timestam
361
361
  end
362
362
  end
363
363
  end
364
- local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
365
- if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
364
+ local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
365
+ local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
366
+ local parentDelayedKey = parentQueueKey .. ":delayed"
367
+ if rcall("ZSCORE", parentWaitingChildrenKey, parentId) ~= false then
368
+ rcall("ZREM", parentWaitingChildrenKey, parentId)
366
369
  local parentQueuePrefix = parentQueueKey .. ":"
367
370
  local parentFailedKey = parentQueueKey .. ":failed"
368
371
  rcall("ZADD", parentFailedKey, timestamp, parentId)
@@ -398,6 +401,43 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
398
401
  local parentRawOpts = jobAttributes[3]
399
402
  local parentOpts = cjson.decode(parentRawOpts)
400
403
  removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
404
+ elseif rcall("ZSCORE", parentDelayedKey, parentId) ~= false then
405
+ rcall("ZREM", parentDelayedKey, parentId)
406
+ local parentQueuePrefix = parentQueueKey .. ":"
407
+ local parentFailedKey = parentQueueKey .. ":failed"
408
+ rcall("ZADD", parentFailedKey, timestamp, parentId)
409
+ local failedReason = "child " .. jobIdKey .. " failed"
410
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
411
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
412
+ failedReason, "prev", "delayed")
413
+ local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
414
+ removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
415
+ if jobAttributes[1] then
416
+ local parentData = cjson.decode(jobAttributes[1])
417
+ if parentData['fpof'] then
418
+ moveParentFromWaitingChildrenToFailed(
419
+ parentData['queueKey'],
420
+ parentData['queueKey'] .. ':' .. parentData['id'],
421
+ parentData['id'],
422
+ parentKey,
423
+ timestamp
424
+ )
425
+ elseif parentData['idof'] or parentData['rdof'] then
426
+ local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
427
+ local grandParentDependenciesSet = grandParentKey .. ":dependencies"
428
+ if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
429
+ moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
430
+ grandParentKey, parentData['id'], timestamp)
431
+ if parentData['idof'] then
432
+ local grandParentFailedSet = grandParentKey .. ":failed"
433
+ rcall("HSET", grandParentFailedSet, parentKey, failedReason)
434
+ end
435
+ end
436
+ end
437
+ end
438
+ local parentRawOpts = jobAttributes[3]
439
+ local parentOpts = cjson.decode(parentRawOpts)
440
+ removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
401
441
  end
402
442
  end
403
443
  --[[
@@ -408,12 +448,12 @@ end
408
448
  Function to get max events value or set by default 10000.
409
449
  ]]
410
450
  local function getOrSetMaxEvents(metaKey)
411
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
412
- if not maxEvents then
413
- maxEvents = 10000
414
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
415
- end
416
- return maxEvents
451
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
452
+ if not maxEvents then
453
+ maxEvents = 10000
454
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
455
+ end
456
+ return maxEvents
417
457
  end
418
458
  local function trimEvents(metaKey, eventStreamKey)
419
459
  local maxEvents = getOrSetMaxEvents(metaKey)
@@ -476,7 +516,7 @@ if (#stalling > 0) then
476
516
  rcall("XADD", eventStreamKey, "*", "event",
477
517
  "failed", "jobId", jobId, 'prev', 'active',
478
518
  'failedReason', failedReason)
479
- if rawParentData ~= false then
519
+ if rawParentData then
480
520
  if opts['fpof'] then
481
521
  local parentData = cjson.decode(rawParentData)
482
522
  moveParentFromWaitingChildrenToFailed(
@@ -1 +1 @@
1
- {"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA6gBS,CAAC;AACb,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
1
+ {"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAqjBS,CAAC;AACb,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -80,12 +80,12 @@ end
80
80
  Function to get max events value or set by default 10000.
81
81
  ]]
82
82
  local function getOrSetMaxEvents(metaKey)
83
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
84
- if not maxEvents then
85
- maxEvents = 10000
86
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
87
- end
88
- return maxEvents
83
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
84
+ if not maxEvents then
85
+ maxEvents = 10000
86
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
87
+ end
88
+ return maxEvents
89
89
  end
90
90
  local function removeLock(jobKey, stalledKey, token, jobId)
91
91
  if token ~= "0" then
@@ -456,8 +456,11 @@ local function removeJobsOnFail(queueKeyPrefix, failedKey, jobId, opts, timestam
456
456
  end
457
457
  end
458
458
  end
459
- local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
460
- if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
459
+ local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
460
+ local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
461
+ local parentDelayedKey = parentQueueKey .. ":delayed"
462
+ if rcall("ZSCORE", parentWaitingChildrenKey, parentId) ~= false then
463
+ rcall("ZREM", parentWaitingChildrenKey, parentId)
461
464
  local parentQueuePrefix = parentQueueKey .. ":"
462
465
  local parentFailedKey = parentQueueKey .. ":failed"
463
466
  rcall("ZADD", parentFailedKey, timestamp, parentId)
@@ -493,6 +496,43 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
493
496
  local parentRawOpts = jobAttributes[3]
494
497
  local parentOpts = cjson.decode(parentRawOpts)
495
498
  removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
499
+ elseif rcall("ZSCORE", parentDelayedKey, parentId) ~= false then
500
+ rcall("ZREM", parentDelayedKey, parentId)
501
+ local parentQueuePrefix = parentQueueKey .. ":"
502
+ local parentFailedKey = parentQueueKey .. ":failed"
503
+ rcall("ZADD", parentFailedKey, timestamp, parentId)
504
+ local failedReason = "child " .. jobIdKey .. " failed"
505
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
506
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
507
+ failedReason, "prev", "delayed")
508
+ local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
509
+ removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
510
+ if jobAttributes[1] then
511
+ local parentData = cjson.decode(jobAttributes[1])
512
+ if parentData['fpof'] then
513
+ moveParentFromWaitingChildrenToFailed(
514
+ parentData['queueKey'],
515
+ parentData['queueKey'] .. ':' .. parentData['id'],
516
+ parentData['id'],
517
+ parentKey,
518
+ timestamp
519
+ )
520
+ elseif parentData['idof'] or parentData['rdof'] then
521
+ local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
522
+ local grandParentDependenciesSet = grandParentKey .. ":dependencies"
523
+ if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
524
+ moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
525
+ grandParentKey, parentData['id'], timestamp)
526
+ if parentData['idof'] then
527
+ local grandParentFailedSet = grandParentKey .. ":failed"
528
+ rcall("HSET", grandParentFailedSet, parentKey, failedReason)
529
+ end
530
+ end
531
+ end
532
+ end
533
+ local parentRawOpts = jobAttributes[3]
534
+ local parentOpts = cjson.decode(parentRawOpts)
535
+ removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
496
536
  end
497
537
  end
498
538
  --[[
@@ -591,12 +631,12 @@ end
591
631
  Function to get max events value or set by default 10000.
592
632
  ]]
593
633
  local function getOrSetMaxEvents(metaKey)
594
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
595
- if not maxEvents then
596
- maxEvents = 10000
597
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
598
- end
599
- return maxEvents
634
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
635
+ if not maxEvents then
636
+ maxEvents = 10000
637
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
638
+ end
639
+ return maxEvents
600
640
  end
601
641
  local function trimEvents(metaKey, eventStreamKey)
602
642
  local maxEvents = getOrSetMaxEvents(metaKey)
@@ -647,7 +687,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
647
687
  local parentKey = jobAttributes[1] or ""
648
688
  local parentId = ""
649
689
  local parentQueueKey = ""
650
- if jobAttributes[2] ~= false then
690
+ if jobAttributes[2] then
651
691
  local jsonDecodedParent = cjson.decode(jobAttributes[2])
652
692
  parentId = jsonDecodedParent['id']
653
693
  parentQueueKey = jsonDecodedParent['queueKey']
@@ -1 +1 @@
1
- {"version":3,"file":"moveToFinished-14.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-14.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4xBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
1
+ {"version":3,"file":"moveToFinished-14.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-14.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAo0Bf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -29,12 +29,12 @@ end
29
29
  Function to get max events value or set by default 10000.
30
30
  ]]
31
31
  local function getOrSetMaxEvents(metaKey)
32
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
33
- if not maxEvents then
34
- maxEvents = 10000
35
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
36
- end
37
- return maxEvents
32
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
33
+ if not maxEvents then
34
+ maxEvents = 10000
35
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
36
+ end
37
+ return maxEvents
38
38
  end
39
39
  --[[
40
40
  Function to check if the job belongs to a job scheduler and
@@ -43,12 +43,12 @@ end
43
43
  Function to get max events value or set by default 10000.
44
44
  ]]
45
45
  local function getOrSetMaxEvents(metaKey)
46
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
47
- if not maxEvents then
48
- maxEvents = 10000
49
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
50
- end
51
- return maxEvents
46
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
47
+ if not maxEvents then
48
+ maxEvents = 10000
49
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
50
+ end
51
+ return maxEvents
52
52
  end
53
53
  --[[
54
54
  Function to check for the meta.paused key to decide if we are paused or not
@@ -68,12 +68,12 @@ end
68
68
  Function to get max events value or set by default 10000.
69
69
  ]]
70
70
  local function getOrSetMaxEvents(metaKey)
71
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
72
- if not maxEvents then
73
- maxEvents = 10000
74
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
75
- end
76
- return maxEvents
71
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
72
+ if not maxEvents then
73
+ maxEvents = 10000
74
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
75
+ end
76
+ return maxEvents
77
77
  end
78
78
  --[[
79
79
  Function to check for the meta.paused key to decide if we are paused or not
@@ -85,41 +85,8 @@ local function getDelayedScore(delayedKey, timestamp, delay)
85
85
  end
86
86
  return minScore, delayedTimestamp
87
87
  end
88
- --[[
89
- Function to store a job
90
- ]]
91
- local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
92
- parentKey, parentData, repeatJobKey)
93
- local jsonOpts = cjson.encode(opts)
94
- local delay = opts['delay'] or 0
95
- local priority = opts['priority'] or 0
96
- local debounceId = opts['de'] and opts['de']['id']
97
- local optionalValues = {}
98
- if parentKey ~= nil then
99
- table.insert(optionalValues, "parentKey")
100
- table.insert(optionalValues, parentKey)
101
- table.insert(optionalValues, "parent")
102
- table.insert(optionalValues, parentData)
103
- end
104
- if repeatJobKey ~= nil then
105
- table.insert(optionalValues, "rjk")
106
- table.insert(optionalValues, repeatJobKey)
107
- end
108
- if debounceId then
109
- table.insert(optionalValues, "deid")
110
- table.insert(optionalValues, debounceId)
111
- end
112
- rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
113
- "timestamp", timestamp, "delay", delay, "priority", priority,
114
- unpack(optionalValues))
115
- rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
116
- return delay, priority
117
- end
118
- local function addDelayedJob(jobIdKey, jobId, delayedKey, eventsKey, name, data, opts, timestamp, repeatJobKey,
119
- maxEvents, markerKey, parentKey, parentData)
120
- -- Store the job.
121
- local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
122
- opts, timestamp, parentKey, parentData, repeatJobKey)
88
+ local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
89
+ maxEvents, markerKey, delay)
123
90
  local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
124
91
  rcall("ZADD", delayedKey, score, jobId)
125
92
  rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
@@ -131,12 +98,12 @@ end
131
98
  Function to get max events value or set by default 10000.
132
99
  ]]
133
100
  local function getOrSetMaxEvents(metaKey)
134
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
135
- if not maxEvents then
136
- maxEvents = 10000
137
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
138
- end
139
- return maxEvents
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
140
107
  end
141
108
  local schedulerKey = repeatKey .. ":" .. jobSchedulerId
142
109
  local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
@@ -1 +1 @@
1
- {"version":3,"file":"updateJobScheduler-7.js","sourceRoot":"","sources":["../../../src/scripts/updateJobScheduler-7.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuKf,CAAC;AACW,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,oBAAoB;IAC1B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
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"}
@@ -21,12 +21,12 @@ local rcall = redis.call
21
21
  Function to get max events value or set by default 10000.
22
22
  ]]
23
23
  local function getOrSetMaxEvents(metaKey)
24
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
25
- if not maxEvents then
26
- maxEvents = 10000
27
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
28
- end
29
- return maxEvents
24
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
25
+ if not maxEvents then
26
+ maxEvents = 10000
27
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
28
+ end
29
+ return maxEvents
30
30
  end
31
31
  if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
32
32
  local maxEvents = getOrSetMaxEvents(KEYS[3])