@tachybase/plugin-adapter-bullmq 1.3.16 → 1.3.18

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 (348) hide show
  1. package/dist/externalVersion.js +2 -2
  2. package/dist/index.js +4 -4
  3. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.d.ts +4 -2
  4. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.js +2 -2
  5. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.d.ts +4 -0
  6. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.js +15 -0
  7. package/dist/node_modules/@bull-board/api/dist/src/handlers/queues.js +4 -0
  8. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.d.ts +4 -0
  9. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.js +15 -0
  10. package/dist/node_modules/@bull-board/api/dist/src/index.js +1 -1
  11. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.d.ts +4 -0
  12. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.js +6 -0
  13. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/bull.js +6 -4
  14. package/dist/node_modules/@bull-board/api/dist/src/routes.js +4 -0
  15. package/dist/node_modules/@bull-board/api/dist/typings/app.d.ts +22 -2
  16. package/dist/node_modules/@bull-board/api/package.json +1 -1
  17. package/dist/node_modules/@bull-board/koa/dist/KoaAdapter.js +1 -1
  18. package/dist/node_modules/@bull-board/koa/dist/index.js +101 -101
  19. package/dist/node_modules/@bull-board/koa/package.json +1 -1
  20. package/dist/node_modules/bullmq/dist/cjs/classes/backoffs.js +18 -5
  21. package/dist/node_modules/bullmq/dist/cjs/classes/child-pool.js +7 -2
  22. package/dist/node_modules/bullmq/dist/cjs/classes/child-processor.js +59 -5
  23. package/dist/node_modules/bullmq/dist/cjs/classes/child.js +3 -1
  24. package/dist/node_modules/bullmq/dist/cjs/classes/errors/index.js +2 -1
  25. package/dist/node_modules/bullmq/dist/cjs/classes/errors/waiting-error.js +19 -0
  26. package/dist/node_modules/bullmq/dist/cjs/classes/flow-producer.js +21 -5
  27. package/dist/node_modules/bullmq/dist/cjs/classes/index.js +1 -0
  28. package/dist/node_modules/bullmq/dist/cjs/classes/job-scheduler.js +88 -62
  29. package/dist/node_modules/bullmq/dist/cjs/classes/job.js +216 -109
  30. package/dist/node_modules/bullmq/dist/cjs/classes/main-base.js +1 -1
  31. package/dist/node_modules/bullmq/dist/cjs/classes/queue-base.js +10 -9
  32. package/dist/node_modules/bullmq/dist/cjs/classes/queue-getters.js +34 -14
  33. package/dist/node_modules/bullmq/dist/cjs/classes/queue.js +19 -13
  34. package/dist/node_modules/bullmq/dist/cjs/classes/redis-connection.js +16 -9
  35. package/dist/node_modules/bullmq/dist/cjs/classes/repeat.js +1 -1
  36. package/dist/node_modules/bullmq/dist/cjs/classes/sandbox.js +54 -28
  37. package/dist/node_modules/bullmq/dist/cjs/classes/scripts.js +141 -39
  38. package/dist/node_modules/bullmq/dist/cjs/classes/worker.js +191 -182
  39. package/dist/node_modules/bullmq/dist/cjs/commands/addDelayedJob-6.lua +6 -17
  40. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-11.lua +123 -0
  41. package/dist/node_modules/bullmq/dist/{esm/commands/addParentJob-4.lua → cjs/commands/addParentJob-5.lua} +7 -6
  42. package/dist/node_modules/bullmq/dist/cjs/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  43. package/dist/node_modules/bullmq/dist/cjs/commands/addRepeatableJob-2.lua +2 -2
  44. package/dist/node_modules/bullmq/dist/{esm/commands/addStandardJob-8.lua → cjs/commands/addStandardJob-9.lua} +9 -8
  45. package/dist/node_modules/bullmq/dist/cjs/commands/cleanJobsInSet-3.lua +9 -5
  46. package/dist/node_modules/bullmq/dist/cjs/commands/drain-5.lua +16 -16
  47. package/dist/node_modules/bullmq/dist/cjs/commands/getDependencyCounts-4.lua +31 -0
  48. package/dist/node_modules/bullmq/dist/cjs/commands/getState-8.lua +5 -5
  49. package/dist/node_modules/bullmq/dist/cjs/commands/getStateV2-8.lua +8 -8
  50. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addDelayedJob.lua +23 -0
  51. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobFromScheduler.lua +37 -0
  52. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobWithPriority.lua +2 -2
  53. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanList.lua +4 -2
  54. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanSet.lua +3 -11
  55. package/dist/node_modules/bullmq/dist/cjs/commands/includes/collectMetrics.lua +1 -1
  56. package/dist/node_modules/bullmq/dist/cjs/commands/includes/deduplicateJob.lua +63 -18
  57. package/dist/node_modules/bullmq/dist/cjs/commands/includes/filterOutJobsToIgnore.lua +14 -0
  58. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +1 -1
  59. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getOrSetMaxEvents.lua +6 -6
  60. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getPriorityScore.lua +8 -0
  61. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isJobSchedulerJob.lua +15 -0
  62. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isLocked.lua +1 -0
  63. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  64. package/dist/node_modules/bullmq/dist/cjs/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  65. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWait.lua +45 -0
  66. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  67. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  68. package/dist/node_modules/bullmq/dist/cjs/commands/includes/prepareJobForProcessing.lua +2 -1
  69. package/dist/node_modules/bullmq/dist/cjs/commands/includes/promoteDelayedJobs.lua +7 -3
  70. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  71. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  72. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJob.lua +2 -2
  73. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobKeys.lua +2 -2
  74. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobWithChildren.lua +95 -0
  75. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeListJobs.lua +7 -1
  76. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeParentDependencyKey.lua +5 -5
  77. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeZSetJobs.lua +2 -8
  78. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJob.lua +2 -2
  79. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJobScheduler.lua +52 -0
  80. package/dist/node_modules/bullmq/dist/cjs/commands/includes/trimEvents.lua +1 -1
  81. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateExistingJobsParent.lua +1 -1
  82. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateJobFields.lua +5 -5
  83. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  84. package/dist/node_modules/bullmq/dist/cjs/commands/isFinished-3.lua +2 -2
  85. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-9.lua +63 -0
  86. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-8.lua +109 -0
  87. package/dist/node_modules/bullmq/dist/cjs/commands/moveToActive-11.lua +3 -2
  88. package/dist/node_modules/bullmq/dist/cjs/commands/moveToFinished-14.lua +52 -52
  89. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-8.lua +106 -0
  90. package/dist/node_modules/bullmq/dist/cjs/commands/removeJob-2.lua +18 -66
  91. package/dist/node_modules/bullmq/dist/cjs/commands/removeJobScheduler-3.lua +1 -1
  92. package/dist/node_modules/bullmq/dist/cjs/commands/removeUnprocessedChildren-2.lua +31 -0
  93. package/dist/node_modules/bullmq/dist/cjs/commands/retryJob-11.lua +11 -5
  94. package/dist/node_modules/bullmq/dist/cjs/commands/updateJobScheduler-12.lua +90 -0
  95. package/dist/node_modules/bullmq/dist/cjs/commands/updateRepeatableJobMillis-1.lua +1 -1
  96. package/dist/node_modules/bullmq/dist/cjs/enums/child-command.js +2 -0
  97. package/dist/node_modules/bullmq/dist/cjs/enums/error-code.js +2 -1
  98. package/dist/node_modules/bullmq/dist/cjs/enums/parent-command.js +5 -2
  99. package/dist/node_modules/bullmq/dist/cjs/index.js +1 -1
  100. package/dist/node_modules/bullmq/dist/cjs/interfaces/index.js +2 -1
  101. package/dist/node_modules/bullmq/dist/cjs/interfaces/{debounce-options.js → parent-options.js} +1 -1
  102. package/dist/node_modules/bullmq/dist/cjs/interfaces/receiver.js +3 -0
  103. package/dist/node_modules/bullmq/dist/cjs/scripts/addDelayedJob-6.js +163 -84
  104. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-11.js +465 -0
  105. package/dist/node_modules/bullmq/dist/cjs/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  106. package/dist/node_modules/bullmq/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  107. package/dist/node_modules/bullmq/dist/cjs/scripts/addRepeatableJob-2.js +18 -13
  108. package/dist/node_modules/bullmq/dist/cjs/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  109. package/dist/node_modules/bullmq/dist/cjs/scripts/changeDelay-4.js +7 -7
  110. package/dist/node_modules/bullmq/dist/cjs/scripts/changePriority-7.js +8 -2
  111. package/dist/node_modules/bullmq/dist/cjs/scripts/cleanJobsInSet-3.js +45 -29
  112. package/dist/node_modules/bullmq/dist/cjs/scripts/drain-5.js +49 -35
  113. package/dist/node_modules/bullmq/dist/cjs/scripts/getDependencyCounts-4.js +37 -0
  114. package/dist/node_modules/bullmq/dist/cjs/scripts/getState-8.js +5 -5
  115. package/dist/node_modules/bullmq/dist/cjs/scripts/getStateV2-8.js +8 -8
  116. package/dist/node_modules/bullmq/dist/cjs/scripts/index.js +10 -7
  117. package/dist/node_modules/bullmq/dist/cjs/scripts/isFinished-3.js +2 -2
  118. package/dist/node_modules/bullmq/dist/cjs/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  119. package/dist/node_modules/bullmq/dist/cjs/scripts/moveJobsToWait-8.js +6 -6
  120. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-8.js +171 -0
  121. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToActive-11.js +18 -8
  122. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToDelayed-8.js +12 -12
  123. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToFinished-14.js +218 -155
  124. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-8.js +529 -0
  125. package/dist/node_modules/bullmq/dist/cjs/scripts/obliterate-2.js +33 -20
  126. package/dist/node_modules/bullmq/dist/cjs/scripts/pause-7.js +1 -1
  127. package/dist/node_modules/bullmq/dist/cjs/scripts/promote-9.js +8 -2
  128. package/dist/node_modules/bullmq/dist/cjs/scripts/removeChildDependency-1.js +7 -7
  129. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJob-2.js +120 -63
  130. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJobScheduler-3.js +3 -3
  131. package/dist/node_modules/bullmq/dist/cjs/scripts/removeRepeatable-3.js +2 -2
  132. package/dist/node_modules/bullmq/dist/cjs/scripts/removeUnprocessedChildren-2.js +339 -0
  133. package/dist/node_modules/bullmq/dist/cjs/scripts/reprocessJob-8.js +6 -6
  134. package/dist/node_modules/bullmq/dist/cjs/scripts/retryJob-11.js +47 -26
  135. package/dist/node_modules/bullmq/dist/cjs/scripts/updateJobScheduler-12.js +274 -0
  136. package/dist/node_modules/bullmq/dist/cjs/scripts/updateProgress-3.js +6 -6
  137. package/dist/node_modules/bullmq/dist/cjs/scripts/updateRepeatableJobMillis-1.js +1 -1
  138. package/dist/node_modules/bullmq/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  139. package/dist/node_modules/bullmq/dist/cjs/types/deduplication-options.js +3 -0
  140. package/dist/node_modules/bullmq/dist/cjs/types/index.js +3 -0
  141. package/dist/node_modules/bullmq/dist/cjs/types/job-progress.js +3 -0
  142. package/dist/node_modules/bullmq/dist/cjs/types/script-queue-context.js +3 -0
  143. package/dist/node_modules/bullmq/dist/cjs/utils.js +29 -1
  144. package/dist/node_modules/bullmq/dist/cjs/version.js +1 -1
  145. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.d.ts +1 -1
  146. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.js +18 -5
  147. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.d.ts +1 -1
  148. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.js +7 -2
  149. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.d.ts +3 -2
  150. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.js +59 -5
  151. package/dist/node_modules/bullmq/dist/esm/classes/child.js +3 -1
  152. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.d.ts +2 -1
  153. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.js +2 -1
  154. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.d.ts +10 -0
  155. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.js +15 -0
  156. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.d.ts +3 -9
  157. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.js +21 -5
  158. package/dist/node_modules/bullmq/dist/esm/classes/index.d.ts +1 -0
  159. package/dist/node_modules/bullmq/dist/esm/classes/index.js +1 -0
  160. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.d.ts +2 -2
  161. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.js +88 -62
  162. package/dist/node_modules/bullmq/dist/esm/classes/job.d.ts +69 -19
  163. package/dist/node_modules/bullmq/dist/esm/classes/job.js +217 -110
  164. package/dist/node_modules/bullmq/dist/esm/classes/main-base.d.ts +2 -3
  165. package/dist/node_modules/bullmq/dist/esm/classes/main-base.js +1 -1
  166. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.d.ts +2 -5
  167. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.js +11 -10
  168. package/dist/node_modules/bullmq/dist/esm/classes/queue-events-producer.d.ts +2 -2
  169. package/dist/node_modules/bullmq/dist/esm/classes/queue-events.d.ts +118 -29
  170. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.d.ts +20 -13
  171. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.js +34 -14
  172. package/dist/node_modules/bullmq/dist/esm/classes/queue.d.ts +19 -16
  173. package/dist/node_modules/bullmq/dist/esm/classes/queue.js +19 -13
  174. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.d.ts +7 -3
  175. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.js +16 -9
  176. package/dist/node_modules/bullmq/dist/esm/classes/repeat.js +1 -1
  177. package/dist/node_modules/bullmq/dist/esm/classes/sandbox.js +54 -28
  178. package/dist/node_modules/bullmq/dist/esm/classes/scripts.d.ts +20 -13
  179. package/dist/node_modules/bullmq/dist/esm/classes/scripts.js +141 -39
  180. package/dist/node_modules/bullmq/dist/esm/classes/worker.d.ts +28 -7
  181. package/dist/node_modules/bullmq/dist/esm/classes/worker.js +192 -183
  182. package/dist/node_modules/bullmq/dist/esm/commands/addDelayedJob-6.lua +6 -17
  183. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-11.lua +123 -0
  184. package/dist/node_modules/bullmq/dist/{cjs/commands/addParentJob-4.lua → esm/commands/addParentJob-5.lua} +7 -6
  185. package/dist/node_modules/bullmq/dist/esm/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  186. package/dist/node_modules/bullmq/dist/esm/commands/addRepeatableJob-2.lua +2 -2
  187. package/dist/node_modules/bullmq/dist/{cjs/commands/addStandardJob-8.lua → esm/commands/addStandardJob-9.lua} +9 -8
  188. package/dist/node_modules/bullmq/dist/esm/commands/cleanJobsInSet-3.lua +9 -5
  189. package/dist/node_modules/bullmq/dist/esm/commands/drain-5.lua +16 -16
  190. package/dist/node_modules/bullmq/dist/esm/commands/getDependencyCounts-4.lua +31 -0
  191. package/dist/node_modules/bullmq/dist/esm/commands/getState-8.lua +5 -5
  192. package/dist/node_modules/bullmq/dist/esm/commands/getStateV2-8.lua +8 -8
  193. package/dist/node_modules/bullmq/dist/esm/commands/includes/addDelayedJob.lua +23 -0
  194. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobFromScheduler.lua +37 -0
  195. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobWithPriority.lua +2 -2
  196. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanList.lua +4 -2
  197. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanSet.lua +3 -11
  198. package/dist/node_modules/bullmq/dist/esm/commands/includes/collectMetrics.lua +1 -1
  199. package/dist/node_modules/bullmq/dist/esm/commands/includes/deduplicateJob.lua +63 -18
  200. package/dist/node_modules/bullmq/dist/esm/commands/includes/filterOutJobsToIgnore.lua +14 -0
  201. package/dist/node_modules/bullmq/dist/esm/commands/includes/getNextDelayedTimestamp.lua +1 -1
  202. package/dist/node_modules/bullmq/dist/esm/commands/includes/getOrSetMaxEvents.lua +6 -6
  203. package/dist/node_modules/bullmq/dist/esm/commands/includes/getPriorityScore.lua +8 -0
  204. package/dist/node_modules/bullmq/dist/esm/commands/includes/isJobSchedulerJob.lua +15 -0
  205. package/dist/node_modules/bullmq/dist/esm/commands/includes/isLocked.lua +1 -0
  206. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  207. package/dist/node_modules/bullmq/dist/esm/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  208. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWait.lua +45 -0
  209. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  210. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  211. package/dist/node_modules/bullmq/dist/esm/commands/includes/prepareJobForProcessing.lua +2 -1
  212. package/dist/node_modules/bullmq/dist/esm/commands/includes/promoteDelayedJobs.lua +7 -3
  213. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  214. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  215. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJob.lua +2 -2
  216. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobKeys.lua +2 -2
  217. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobWithChildren.lua +95 -0
  218. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeListJobs.lua +7 -1
  219. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeParentDependencyKey.lua +5 -5
  220. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeZSetJobs.lua +2 -8
  221. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJob.lua +2 -2
  222. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJobScheduler.lua +52 -0
  223. package/dist/node_modules/bullmq/dist/esm/commands/includes/trimEvents.lua +1 -1
  224. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateExistingJobsParent.lua +1 -1
  225. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateJobFields.lua +5 -5
  226. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  227. package/dist/node_modules/bullmq/dist/esm/commands/isFinished-3.lua +2 -2
  228. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-9.lua +63 -0
  229. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-8.lua +109 -0
  230. package/dist/node_modules/bullmq/dist/esm/commands/moveToActive-11.lua +3 -2
  231. package/dist/node_modules/bullmq/dist/esm/commands/moveToFinished-14.lua +52 -52
  232. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-8.lua +106 -0
  233. package/dist/node_modules/bullmq/dist/esm/commands/removeJob-2.lua +18 -66
  234. package/dist/node_modules/bullmq/dist/esm/commands/removeJobScheduler-3.lua +1 -1
  235. package/dist/node_modules/bullmq/dist/esm/commands/removeUnprocessedChildren-2.lua +31 -0
  236. package/dist/node_modules/bullmq/dist/esm/commands/retryJob-11.lua +11 -5
  237. package/dist/node_modules/bullmq/dist/esm/commands/updateJobScheduler-12.lua +90 -0
  238. package/dist/node_modules/bullmq/dist/esm/commands/updateRepeatableJobMillis-1.lua +1 -1
  239. package/dist/node_modules/bullmq/dist/esm/enums/child-command.d.ts +3 -1
  240. package/dist/node_modules/bullmq/dist/esm/enums/child-command.js +2 -0
  241. package/dist/node_modules/bullmq/dist/esm/enums/error-code.d.ts +3 -2
  242. package/dist/node_modules/bullmq/dist/esm/enums/error-code.js +2 -1
  243. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.d.ts +5 -2
  244. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.js +5 -2
  245. package/dist/node_modules/bullmq/dist/esm/interfaces/backoff-options.d.ts +5 -0
  246. package/dist/node_modules/bullmq/dist/esm/interfaces/base-job-options.d.ts +3 -9
  247. package/dist/node_modules/bullmq/dist/esm/interfaces/child-message.d.ts +1 -0
  248. package/dist/node_modules/bullmq/dist/esm/interfaces/index.d.ts +2 -1
  249. package/dist/node_modules/bullmq/dist/esm/interfaces/index.js +2 -1
  250. package/dist/node_modules/bullmq/dist/esm/interfaces/job-json.d.ts +6 -2
  251. package/dist/node_modules/bullmq/dist/esm/interfaces/job-scheduler-json.d.ts +7 -4
  252. package/dist/node_modules/bullmq/dist/esm/interfaces/minimal-job.d.ts +34 -15
  253. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.d.ts +11 -0
  254. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.js +2 -0
  255. package/dist/node_modules/bullmq/dist/esm/interfaces/parent.d.ts +6 -2
  256. package/dist/node_modules/bullmq/dist/esm/interfaces/queue-options.d.ts +15 -6
  257. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.d.ts +4 -0
  258. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.js +2 -0
  259. package/dist/node_modules/bullmq/dist/esm/interfaces/repeat-options.d.ts +1 -2
  260. package/dist/node_modules/bullmq/dist/esm/interfaces/repeatable-options.d.ts +2 -0
  261. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-job.d.ts +3 -2
  262. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-options.d.ts +1 -1
  263. package/dist/node_modules/bullmq/dist/esm/interfaces/telemetry.d.ts +18 -15
  264. package/dist/node_modules/bullmq/dist/esm/interfaces/worker-options.d.ts +10 -10
  265. package/dist/node_modules/bullmq/dist/esm/scripts/addDelayedJob-6.js +163 -84
  266. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-11.js +462 -0
  267. package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  268. package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  269. package/dist/node_modules/bullmq/dist/esm/scripts/addRepeatableJob-2.js +18 -13
  270. package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  271. package/dist/node_modules/bullmq/dist/esm/scripts/changeDelay-4.js +7 -7
  272. package/dist/node_modules/bullmq/dist/esm/scripts/changePriority-7.js +8 -2
  273. package/dist/node_modules/bullmq/dist/esm/scripts/cleanJobsInSet-3.js +45 -29
  274. package/dist/node_modules/bullmq/dist/esm/scripts/drain-5.js +49 -35
  275. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.d.ts +5 -0
  276. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.js +34 -0
  277. package/dist/node_modules/bullmq/dist/esm/scripts/getState-8.js +5 -5
  278. package/dist/node_modules/bullmq/dist/esm/scripts/getStateV2-8.js +8 -8
  279. package/dist/node_modules/bullmq/dist/esm/scripts/index.d.ts +10 -7
  280. package/dist/node_modules/bullmq/dist/esm/scripts/index.js +10 -7
  281. package/dist/node_modules/bullmq/dist/esm/scripts/isFinished-3.js +2 -2
  282. package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  283. package/dist/node_modules/bullmq/dist/esm/scripts/moveJobsToWait-8.js +6 -6
  284. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-8.js +168 -0
  285. package/dist/node_modules/bullmq/dist/esm/scripts/moveToActive-11.js +18 -8
  286. package/dist/node_modules/bullmq/dist/esm/scripts/moveToDelayed-8.js +12 -12
  287. package/dist/node_modules/bullmq/dist/esm/scripts/moveToFinished-14.js +218 -155
  288. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-8.js +526 -0
  289. package/dist/node_modules/bullmq/dist/esm/scripts/obliterate-2.js +33 -20
  290. package/dist/node_modules/bullmq/dist/esm/scripts/pause-7.js +1 -1
  291. package/dist/node_modules/bullmq/dist/esm/scripts/promote-9.js +8 -2
  292. package/dist/node_modules/bullmq/dist/esm/scripts/removeChildDependency-1.js +7 -7
  293. package/dist/node_modules/bullmq/dist/esm/scripts/removeJob-2.js +120 -63
  294. package/dist/node_modules/bullmq/dist/esm/scripts/removeJobScheduler-3.js +3 -3
  295. package/dist/node_modules/bullmq/dist/esm/scripts/removeRepeatable-3.js +2 -2
  296. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.d.ts +5 -0
  297. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.js +336 -0
  298. package/dist/node_modules/bullmq/dist/esm/scripts/reprocessJob-8.js +6 -6
  299. package/dist/node_modules/bullmq/dist/esm/scripts/retryJob-11.js +47 -26
  300. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.d.ts +5 -0
  301. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.js +271 -0
  302. package/dist/node_modules/bullmq/dist/esm/scripts/updateProgress-3.js +6 -6
  303. package/dist/node_modules/bullmq/dist/esm/scripts/updateRepeatableJobMillis-1.js +1 -1
  304. package/dist/node_modules/bullmq/dist/esm/tsconfig.tsbuildinfo +1 -1
  305. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.d.ts +22 -0
  306. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.js +2 -0
  307. package/dist/node_modules/bullmq/dist/esm/types/index.d.ts +3 -0
  308. package/dist/node_modules/bullmq/dist/esm/types/index.js +3 -0
  309. package/dist/node_modules/bullmq/dist/esm/types/job-options.d.ts +19 -8
  310. package/dist/node_modules/bullmq/dist/esm/types/job-progress.d.ts +1 -0
  311. package/dist/node_modules/bullmq/dist/esm/types/job-progress.js +2 -0
  312. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.d.ts +2 -0
  313. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.js +2 -0
  314. package/dist/node_modules/bullmq/dist/esm/utils.d.ts +25 -5
  315. package/dist/node_modules/bullmq/dist/esm/utils.js +27 -0
  316. package/dist/node_modules/bullmq/dist/esm/version.d.ts +1 -1
  317. package/dist/node_modules/bullmq/dist/esm/version.js +1 -1
  318. package/dist/node_modules/bullmq/package.json +1 -1
  319. package/package.json +7 -7
  320. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-2.lua +0 -91
  321. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  322. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKey.lua +0 -11
  323. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  324. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-10.lua +0 -60
  325. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-9.lua +0 -156
  326. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-5.lua +0 -68
  327. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-2.js +0 -237
  328. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-9.js +0 -529
  329. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-5.js +0 -83
  330. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-2.lua +0 -91
  331. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  332. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKey.lua +0 -11
  333. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  334. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-10.lua +0 -60
  335. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-9.lua +0 -156
  336. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-5.lua +0 -68
  337. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.d.ts +0 -13
  338. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.js +0 -2
  339. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-2.js +0 -234
  340. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-9.js +0 -526
  341. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-5.js +0 -80
  342. /package/dist/node_modules/bullmq/dist/esm/scripts/{addJobScheduler-2.d.ts → addJobScheduler-11.d.ts} +0 -0
  343. /package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.d.ts → addParentJob-5.d.ts} +0 -0
  344. /package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-9.d.ts} +0 -0
  345. /package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.d.ts → addStandardJob-9.d.ts} +0 -0
  346. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.d.ts → moveJobFromActiveToWait-9.d.ts} +0 -0
  347. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveStalledJobsToWait-9.d.ts → moveStalledJobsToWait-8.d.ts} +0 -0
  348. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveToWaitingChildren-5.d.ts → moveToWaitingChildren-8.d.ts} +0 -0
@@ -1,20 +1,14 @@
1
1
  -- Includes
2
2
  --- @include "batches"
3
+ --- @include "filterOutJobsToIgnore"
3
4
  --- @include "getZSetItems"
4
5
  --- @include "removeJobs"
5
6
 
6
7
  local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
7
8
  local jobs = getZSetItems(keyName, max)
8
9
 
9
- -- filter out jobs to ignore
10
10
  if jobsToIgnore then
11
- local filteredJobs = {}
12
- for i = 1, #jobs do
13
- if not jobsToIgnore[jobs[i]] then
14
- table.insert(filteredJobs, jobs[i])
15
- end
16
- end
17
- jobs = filteredJobs
11
+ jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
18
12
  end
19
13
 
20
14
  local count = removeJobs(jobs, hard, baseKey, max)
@@ -7,7 +7,7 @@ local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
7
7
  local delay = opts['delay'] or 0
8
8
  local priority = opts['priority'] or 0
9
9
  local debounceId = opts['de'] and opts['de']['id']
10
-
10
+
11
11
  local optionalValues = {}
12
12
  if parentKey ~= nil then
13
13
  table.insert(optionalValues, "parentKey")
@@ -16,7 +16,7 @@ local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
16
16
  table.insert(optionalValues, parentData)
17
17
  end
18
18
 
19
- if repeatJobKey ~= nil then
19
+ if repeatJobKey then
20
20
  table.insert(optionalValues, "rjk")
21
21
  table.insert(optionalValues, repeatJobKey)
22
22
  end
@@ -0,0 +1,52 @@
1
+ --[[
2
+ Function to store a job scheduler
3
+ ]]
4
+ local function storeJobScheduler(schedulerId, schedulerKey, repeatKey, nextMillis, opts,
5
+ templateData, templateOpts)
6
+ rcall("ZADD", repeatKey, nextMillis, schedulerId)
7
+
8
+ local optionalValues = {}
9
+ if opts['tz'] then
10
+ table.insert(optionalValues, "tz")
11
+ table.insert(optionalValues, opts['tz'])
12
+ end
13
+
14
+ if opts['limit'] then
15
+ table.insert(optionalValues, "limit")
16
+ table.insert(optionalValues, opts['limit'])
17
+ end
18
+
19
+ if opts['pattern'] then
20
+ table.insert(optionalValues, "pattern")
21
+ table.insert(optionalValues, opts['pattern'])
22
+ end
23
+
24
+ if opts['endDate'] then
25
+ table.insert(optionalValues, "endDate")
26
+ table.insert(optionalValues, opts['endDate'])
27
+ end
28
+
29
+ if opts['every'] then
30
+ table.insert(optionalValues, "every")
31
+ table.insert(optionalValues, opts['every'])
32
+ end
33
+
34
+ if opts['offset'] then
35
+ table.insert(optionalValues, "offset")
36
+ table.insert(optionalValues, opts['offset'])
37
+ end
38
+
39
+ local jsonTemplateOpts = cjson.encode(templateOpts)
40
+ if jsonTemplateOpts and jsonTemplateOpts ~= '{}' then
41
+ table.insert(optionalValues, "opts")
42
+ table.insert(optionalValues, jsonTemplateOpts)
43
+ end
44
+
45
+ if templateData and templateData ~= '{}' then
46
+ table.insert(optionalValues, "data")
47
+ table.insert(optionalValues, templateData)
48
+ end
49
+
50
+ rcall("DEL", schedulerKey) -- remove all attributes and then re-insert new ones
51
+ rcall("HMSET", schedulerKey, "name", opts['name'], "ic", 1, unpack(optionalValues))
52
+ end
@@ -7,7 +7,7 @@
7
7
 
8
8
  local function trimEvents(metaKey, eventStreamKey)
9
9
  local maxEvents = getOrSetMaxEvents(metaKey)
10
- if maxEvents ~= false then
10
+ if maxEvents then
11
11
  rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
12
12
  else
13
13
  rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
@@ -12,7 +12,7 @@ local function updateExistingJobsParent(parentKey, parent, parentData,
12
12
  parentDependenciesKey, completedKey,
13
13
  jobIdKey, jobId, timestamp)
14
14
  if parentKey ~= nil then
15
- if rcall("ZSCORE", completedKey, jobId) ~= false then
15
+ if rcall("ZSCORE", completedKey, jobId) then
16
16
  local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
17
17
  updateParentDepsIfNeeded(parentKey, parent['queueKey'],
18
18
  parentDependenciesKey, parent['id'],
@@ -2,10 +2,10 @@
2
2
  Function to update a bunch of fields in a job.
3
3
  ]]
4
4
  local function updateJobFields(jobKey, msgpackedFields)
5
- if msgpackedFields and #msgpackedFields > 0 then
6
- local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
7
- if fieldsToUpdate then
8
- redis.call("HMSET", jobKey, unpack(fieldsToUpdate))
9
- end
5
+ if msgpackedFields and #msgpackedFields > 0 then
6
+ local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
7
+ if fieldsToUpdate then
8
+ rcall("HMSET", jobKey, unpack(fieldsToUpdate))
10
9
  end
10
+ end
11
11
  end
@@ -3,11 +3,11 @@
3
3
  ]]
4
4
 
5
5
  -- Includes
6
- --- @include "moveParentToWaitIfNeeded"
6
+ --- @include "moveParentToWaitIfNoPendingDependencies"
7
7
 
8
8
  local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
9
9
  parentId, jobIdKey, returnvalue, timestamp )
10
10
  local processedSet = parentKey .. ":processed"
11
11
  rcall("HSET", processedSet, jobIdKey, returnvalue)
12
- moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
12
+ moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
13
13
  end
@@ -23,7 +23,7 @@ if rcall("EXISTS", KEYS[3]) ~= 1 then
23
23
  return -1
24
24
  end
25
25
 
26
- if rcall("ZSCORE", KEYS[1], ARGV[1]) ~= false then
26
+ if rcall("ZSCORE", KEYS[1], ARGV[1]) then
27
27
  if ARGV[2] == "1" then
28
28
  local returnValue = rcall("HGET", KEYS[3], "returnvalue")
29
29
 
@@ -32,7 +32,7 @@ if rcall("ZSCORE", KEYS[1], ARGV[1]) ~= false then
32
32
  return 1
33
33
  end
34
34
 
35
- if rcall("ZSCORE", KEYS[2], ARGV[1]) ~= false then
35
+ if rcall("ZSCORE", KEYS[2], ARGV[1]) then
36
36
  if ARGV[2] == "1" then
37
37
  local failedReason = rcall("HGET", KEYS[3], "failedReason")
38
38
 
@@ -0,0 +1,63 @@
1
+ --[[
2
+ Function to move job from active state to wait.
3
+ Input:
4
+ KEYS[1] active key
5
+ KEYS[2] wait key
6
+
7
+ KEYS[3] stalled key
8
+ KEYS[4] paused key
9
+ KEYS[5] meta key
10
+ KEYS[6] limiter key
11
+ KEYS[7] prioritized key
12
+ KEYS[8] marker key
13
+ KEYS[9] event key
14
+
15
+ ARGV[1] job id
16
+ ARGV[2] lock token
17
+ ARGV[3] job id key
18
+ ]]
19
+ local rcall = redis.call
20
+
21
+ -- Includes
22
+ --- @include "includes/addJobInTargetList"
23
+ --- @include "includes/pushBackJobWithPriority"
24
+ --- @include "includes/getOrSetMaxEvents"
25
+ --- @include "includes/getTargetQueueList"
26
+ --- @include "includes/removeLock"
27
+
28
+ local jobId = ARGV[1]
29
+ local token = ARGV[2]
30
+ local jobKey = ARGV[3]
31
+
32
+ local errorCode = removeLock(jobKey, KEYS[3], token, jobId)
33
+ if errorCode < 0 then
34
+ return errorCode
35
+ end
36
+
37
+ local metaKey = KEYS[5]
38
+ local removed = rcall("LREM", KEYS[1], 1, jobId)
39
+ if removed > 0 then
40
+ local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[1], KEYS[2], KEYS[4])
41
+
42
+ local priority = tonumber(rcall("HGET", ARGV[3], "priority")) or 0
43
+
44
+ if priority > 0 then
45
+ pushBackJobWithPriority(KEYS[7], priority, jobId)
46
+ else
47
+ addJobInTargetList(target, KEYS[8], "RPUSH", isPausedOrMaxed, jobId)
48
+ end
49
+
50
+ local maxEvents = getOrSetMaxEvents(metaKey)
51
+
52
+ -- Emit waiting event
53
+ rcall("XADD", KEYS[9], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
54
+ "jobId", jobId, "prev", "active")
55
+ end
56
+
57
+ local pttl = rcall("PTTL", KEYS[6])
58
+
59
+ if pttl > 0 then
60
+ return pttl
61
+ else
62
+ return 0
63
+ end
@@ -0,0 +1,109 @@
1
+ --[[
2
+ Move stalled jobs to wait.
3
+
4
+ Input:
5
+ KEYS[1] 'stalled' (SET)
6
+ KEYS[2] 'wait', (LIST)
7
+ KEYS[3] 'active', (LIST)
8
+ KEYS[4] 'stalled-check', (KEY)
9
+ KEYS[5] 'meta', (KEY)
10
+ KEYS[6] 'paused', (LIST)
11
+ KEYS[7] 'marker'
12
+ KEYS[8] 'event stream' (STREAM)
13
+
14
+ ARGV[1] Max stalled job count
15
+ ARGV[2] queue.toKey('')
16
+ ARGV[3] timestamp
17
+ ARGV[4] max check time
18
+
19
+ Events:
20
+ 'stalled' with stalled job id.
21
+ ]]
22
+ local rcall = redis.call
23
+
24
+ -- Includes
25
+ --- @include "includes/addJobInTargetList"
26
+ --- @include "includes/batches"
27
+ --- @include "includes/getTargetQueueList"
28
+ --- @include "includes/trimEvents"
29
+
30
+ local stalledKey = KEYS[1]
31
+ local waitKey = KEYS[2]
32
+ local activeKey = KEYS[3]
33
+ local stalledCheckKey = KEYS[4]
34
+ local metaKey = KEYS[5]
35
+ local pausedKey = KEYS[6]
36
+ local markerKey = KEYS[7]
37
+ local eventStreamKey = KEYS[8]
38
+ local maxStalledJobCount = tonumber(ARGV[1])
39
+ local queueKeyPrefix = ARGV[2]
40
+ local timestamp = ARGV[3]
41
+ local maxCheckTime = ARGV[4]
42
+
43
+ if rcall("EXISTS", stalledCheckKey) == 1 then
44
+ return {}
45
+ end
46
+
47
+ rcall("SET", stalledCheckKey, timestamp, "PX", maxCheckTime)
48
+
49
+ -- Trim events before emiting them to avoid trimming events emitted in this script
50
+ trimEvents(metaKey, eventStreamKey)
51
+
52
+ -- Move all stalled jobs to wait
53
+ local stalling = rcall('SMEMBERS', stalledKey)
54
+ local stalled = {}
55
+ if (#stalling > 0) then
56
+ rcall('DEL', stalledKey)
57
+
58
+ -- Remove from active list
59
+ for i, jobId in ipairs(stalling) do
60
+ -- Markers in waitlist DEPRECATED in v5: Remove in v6.
61
+ if string.sub(jobId, 1, 2) == "0:" then
62
+ -- If the jobId is a delay marker ID we just remove it.
63
+ rcall("LREM", activeKey, 1, jobId)
64
+ else
65
+ local jobKey = queueKeyPrefix .. jobId
66
+
67
+ -- Check that the lock is also missing, then we can handle this job as really stalled.
68
+ if (rcall("EXISTS", jobKey .. ":lock") == 0) then
69
+ -- Remove from the active queue.
70
+ local removed = rcall("LREM", activeKey, 1, jobId)
71
+
72
+ if (removed > 0) then
73
+ -- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
74
+ local stalledCount = rcall("HINCRBY", jobKey, "stc", 1)
75
+ if stalledCount > maxStalledJobCount then
76
+ local jobAttributes = rcall("HMGET", jobKey, "opts", "parent")
77
+ local rawOpts = jobAttributes[1]
78
+ local rawParentData = jobAttributes[2]
79
+ local opts = cjson.decode(rawOpts)
80
+
81
+ local failedReason = "job stalled more than allowable limit"
82
+ rcall("HSET", jobKey, "defa", failedReason)
83
+ end
84
+ local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
85
+
86
+ -- Move the job back to the wait queue, to immediately be picked up by a waiting worker.
87
+ addJobInTargetList(target, markerKey, "RPUSH", isPausedOrMaxed, jobId)
88
+
89
+ rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId", jobId, 'prev', 'active')
90
+
91
+ -- Emit the stalled event
92
+ rcall("XADD", eventStreamKey, "*", "event", "stalled", "jobId", jobId)
93
+ table.insert(stalled, jobId)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+
100
+ -- Mark potentially stalled jobs
101
+ local active = rcall('LRANGE', activeKey, 0, -1)
102
+
103
+ if (#active > 0) then
104
+ for from, to in batches(#active, 7000) do
105
+ rcall('SADD', stalledKey, unpack(active, from, to))
106
+ end
107
+ end
108
+
109
+ return stalled
@@ -33,6 +33,7 @@
33
33
  opts - token - lock token
34
34
  opts - lockDuration
35
35
  opts - limiter
36
+ opts - name - worker name
36
37
  ]]
37
38
  local rcall = redis.call
38
39
  local waitKey = KEYS[1]
@@ -46,7 +47,7 @@ local opts = cmsgpack.unpack(ARGV[3])
46
47
  --- @include "includes/getNextDelayedTimestamp"
47
48
  --- @include "includes/getRateLimitTTL"
48
49
  --- @include "includes/getTargetQueueList"
49
- --- @include "includes/moveJobFromPriorityToActive"
50
+ --- @include "includes/moveJobFromPrioritizedToActive"
50
51
  --- @include "includes/prepareJobForProcessing"
51
52
  --- @include "includes/promoteDelayedJobs"
52
53
 
@@ -79,7 +80,7 @@ if jobId then
79
80
  return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
80
81
  maxJobs, markerKey, opts)
81
82
  else
82
- jobId = moveJobFromPriorityToActive(KEYS[3], activeKey, KEYS[10])
83
+ jobId = moveJobFromPrioritizedToActive(KEYS[3], activeKey, KEYS[10])
83
84
  if jobId then
84
85
  return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
85
86
  maxJobs, markerKey, opts)
@@ -40,16 +40,19 @@
40
40
  opts - attempts max attempts
41
41
  opts - maxMetricsSize
42
42
  opts - fpof - fail parent on fail
43
+ opts - cpof - continue parent on fail
43
44
  opts - idof - ignore dependency on fail
44
45
  opts - rdof - remove dependency on fail
46
+ opts - name - worker name
45
47
 
46
48
  Output:
47
49
  0 OK
48
50
  -1 Missing key.
49
51
  -2 Missing lock.
50
52
  -3 Job not in active set
51
- -4 Job has pending dependencies
53
+ -4 Job has pending children
52
54
  -6 Lock is not owned by this client
55
+ -9 Job has failed children
53
56
 
54
57
  Events:
55
58
  'completed/failed'
@@ -61,12 +64,11 @@ local rcall = redis.call
61
64
  --- @include "includes/getNextDelayedTimestamp"
62
65
  --- @include "includes/getRateLimitTTL"
63
66
  --- @include "includes/getTargetQueueList"
64
- --- @include "includes/moveJobFromPriorityToActive"
65
- --- @include "includes/moveParentFromWaitingChildrenToFailed"
66
- --- @include "includes/moveParentToWaitIfNeeded"
67
+ --- @include "includes/moveJobFromPrioritizedToActive"
68
+ --- @include "includes/moveChildFromDependenciesIfNeeded"
67
69
  --- @include "includes/prepareJobForProcessing"
68
70
  --- @include "includes/promoteDelayedJobs"
69
- --- @include "includes/removeDeduplicationKeyIfNeeded"
71
+ --- @include "includes/removeDeduplicationKeyIfNeededOnFinalization"
70
72
  --- @include "includes/removeJobKeys"
71
73
  --- @include "includes/removeJobsByMaxAge"
72
74
  --- @include "includes/removeJobsByMaxCount"
@@ -77,7 +79,19 @@ local rcall = redis.call
77
79
  --- @include "includes/updateJobFields"
78
80
 
79
81
  local jobIdKey = KEYS[12]
80
- if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
82
+ if rcall("EXISTS", jobIdKey) == 1 then -- Make sure job exists
83
+ -- Make sure it does not have pending dependencies
84
+ -- It must happen before removing lock
85
+ if ARGV[5] == "completed" then
86
+ if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then
87
+ return -4
88
+ end
89
+
90
+ if rcall("ZCARD", jobIdKey .. ":unsuccessful") ~= 0 then
91
+ return -9
92
+ end
93
+ end
94
+
81
95
  local opts = cmsgpack.unpack(ARGV[8])
82
96
 
83
97
  local token = opts['token']
@@ -94,15 +108,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
94
108
  local maxCount = opts['keepJobs']['count']
95
109
  local maxAge = opts['keepJobs']['age']
96
110
 
97
- if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then -- // Make sure it does not have pending dependencies
98
- return -4
99
- end
100
-
101
111
  local jobAttributes = rcall("HMGET", jobIdKey, "parentKey", "parent", "deid")
102
112
  local parentKey = jobAttributes[1] or ""
103
113
  local parentId = ""
104
114
  local parentQueueKey = ""
105
- if jobAttributes[2] ~= false then
115
+ if jobAttributes[2] then -- TODO: need to revisit this logic if it's still needed
106
116
  local jsonDecodedParent = cjson.decode(jobAttributes[2])
107
117
  parentId = jsonDecodedParent['id']
108
118
  parentQueueKey = jsonDecodedParent['queueKey']
@@ -114,7 +124,9 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
114
124
  -- Remove from active list (if not active we shall return error)
115
125
  local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
116
126
 
117
- if (numRemovedElements < 1) then return -3 end
127
+ if (numRemovedElements < 1) then
128
+ return -3
129
+ end
118
130
 
119
131
  local eventStreamKey = KEYS[4]
120
132
  local metaKey = KEYS[9]
@@ -123,7 +135,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
123
135
 
124
136
  local prefix = ARGV[7]
125
137
 
126
- removeDeduplicationKeyIfNeeded(prefix, jobAttributes[3])
138
+ removeDeduplicationKeyIfNeededOnFinalization(prefix, jobAttributes[3], jobId)
127
139
 
128
140
  -- If job has a parent we need to
129
141
  -- 1) remove this job id from parents dependencies
@@ -139,26 +151,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
139
151
  if ARGV[5] == "completed" then
140
152
  local dependenciesSet = parentKey .. ":dependencies"
141
153
  if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
142
- updateParentDepsIfNeeded(parentKey, parentQueueKey,
143
- dependenciesSet, parentId, jobIdKey,
144
- ARGV[4], timestamp)
154
+ updateParentDepsIfNeeded(parentKey, parentQueueKey, dependenciesSet, parentId, jobIdKey, ARGV[4],
155
+ timestamp)
145
156
  end
146
157
  else
147
- if opts['fpof'] then
148
- moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey,
149
- parentId, jobIdKey,
150
- timestamp)
151
- elseif opts['idof'] or opts['rdof'] then
152
- local dependenciesSet = parentKey .. ":dependencies"
153
- if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
154
- moveParentToWaitIfNeeded(parentQueueKey, dependenciesSet,
155
- parentKey, parentId, timestamp)
156
- if opts['idof'] then
157
- local failedSet = parentKey .. ":failed"
158
- rcall("HSET", failedSet, jobIdKey, ARGV[4])
159
- end
160
- end
161
- end
158
+ moveChildFromDependenciesIfNeeded(jobAttributes[2], jobIdKey, ARGV[4], timestamp)
162
159
  end
163
160
  end
164
161
 
@@ -169,9 +166,13 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
169
166
  local targetSet = KEYS[11]
170
167
  -- Add to complete/failed set
171
168
  rcall("ZADD", targetSet, timestamp, jobId)
172
- rcall("HMSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
169
+ rcall("HSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
173
170
  -- "returnvalue" / "failedReason" and "finishedOn"
174
171
 
172
+ if ARGV[5] == "failed" then
173
+ rcall("HDEL", jobIdKey, "defa")
174
+ end
175
+
175
176
  -- Remove old jobs?
176
177
  if maxAge ~= nil then
177
178
  removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
@@ -190,13 +191,12 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
190
191
  end
191
192
  end
192
193
 
193
- rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3],
194
- ARGV[4])
194
+ rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3], ARGV[4], "prev", "active")
195
195
 
196
196
  if ARGV[5] == "failed" then
197
197
  if tonumber(attemptsMade) >= tonumber(attempts) then
198
- rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId",
199
- jobId, "attemptsMade", attemptsMade)
198
+ rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId", jobId, "attemptsMade",
199
+ attemptsMade)
200
200
  end
201
201
  end
202
202
 
@@ -213,17 +213,21 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
213
213
 
214
214
  local markerKey = KEYS[14]
215
215
  -- Check if there are delayed jobs that can be promoted
216
- promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[3], eventStreamKey, prefix,
217
- timestamp, KEYS[10], isPausedOrMaxed)
216
+ promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[3], eventStreamKey, prefix, timestamp, KEYS[10],
217
+ isPausedOrMaxed)
218
218
 
219
219
  local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
220
220
  -- Check if we are rate limited first.
221
221
  local expireTime = getRateLimitTTL(maxJobs, KEYS[6])
222
222
 
223
- if expireTime > 0 then return {0, 0, expireTime, 0} end
223
+ if expireTime > 0 then
224
+ return {0, 0, expireTime, 0}
225
+ end
224
226
 
225
227
  -- paused or maxed queue
226
- if isPausedOrMaxed then return {0, 0, 0, 0} end
228
+ if isPausedOrMaxed then
229
+ return {0, 0, 0, 0}
230
+ end
227
231
 
228
232
  jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
229
233
 
@@ -235,23 +239,19 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
235
239
  -- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
236
240
  -- but if ID is 0:0, then there is at least 1 prioritized job to process
237
241
  if jobId == "0:0" then
238
- jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2],
239
- KEYS[10])
240
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
241
- timestamp, maxJobs, markerKey,
242
- opts)
242
+ jobId = moveJobFromPrioritizedToActive(KEYS[3], KEYS[2], KEYS[10])
243
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs,
244
+ markerKey, opts)
243
245
  end
244
246
  else
245
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
246
- timestamp, maxJobs, markerKey,
247
- opts)
247
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs, markerKey,
248
+ opts)
248
249
  end
249
250
  else
250
- jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
251
+ jobId = moveJobFromPrioritizedToActive(KEYS[3], KEYS[2], KEYS[10])
251
252
  if jobId then
252
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
253
- timestamp, maxJobs, markerKey,
254
- opts)
253
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs, markerKey,
254
+ opts)
255
255
  end
256
256
  end
257
257