@tachybase/plugin-adapter-bullmq 1.3.17 → 1.3.19

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 (347) hide show
  1. package/dist/externalVersion.js +2 -2
  2. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.d.ts +4 -2
  3. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.js +2 -2
  4. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.d.ts +4 -0
  5. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.js +15 -0
  6. package/dist/node_modules/@bull-board/api/dist/src/handlers/queues.js +4 -0
  7. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.d.ts +4 -0
  8. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.js +15 -0
  9. package/dist/node_modules/@bull-board/api/dist/src/index.js +1 -1
  10. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.d.ts +4 -0
  11. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.js +6 -0
  12. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/bull.js +6 -4
  13. package/dist/node_modules/@bull-board/api/dist/src/routes.js +4 -0
  14. package/dist/node_modules/@bull-board/api/dist/typings/app.d.ts +22 -2
  15. package/dist/node_modules/@bull-board/api/package.json +1 -1
  16. package/dist/node_modules/@bull-board/koa/dist/KoaAdapter.js +1 -1
  17. package/dist/node_modules/@bull-board/koa/dist/index.js +6 -6
  18. package/dist/node_modules/@bull-board/koa/package.json +1 -1
  19. package/dist/node_modules/bullmq/dist/cjs/classes/backoffs.js +18 -5
  20. package/dist/node_modules/bullmq/dist/cjs/classes/child-pool.js +7 -2
  21. package/dist/node_modules/bullmq/dist/cjs/classes/child-processor.js +59 -5
  22. package/dist/node_modules/bullmq/dist/cjs/classes/child.js +3 -1
  23. package/dist/node_modules/bullmq/dist/cjs/classes/errors/index.js +2 -1
  24. package/dist/node_modules/bullmq/dist/cjs/classes/errors/waiting-error.js +19 -0
  25. package/dist/node_modules/bullmq/dist/cjs/classes/flow-producer.js +21 -5
  26. package/dist/node_modules/bullmq/dist/cjs/classes/index.js +1 -0
  27. package/dist/node_modules/bullmq/dist/cjs/classes/job-scheduler.js +88 -62
  28. package/dist/node_modules/bullmq/dist/cjs/classes/job.js +216 -109
  29. package/dist/node_modules/bullmq/dist/cjs/classes/main-base.js +1 -1
  30. package/dist/node_modules/bullmq/dist/cjs/classes/queue-base.js +10 -9
  31. package/dist/node_modules/bullmq/dist/cjs/classes/queue-getters.js +34 -14
  32. package/dist/node_modules/bullmq/dist/cjs/classes/queue.js +19 -13
  33. package/dist/node_modules/bullmq/dist/cjs/classes/redis-connection.js +16 -9
  34. package/dist/node_modules/bullmq/dist/cjs/classes/repeat.js +1 -1
  35. package/dist/node_modules/bullmq/dist/cjs/classes/sandbox.js +54 -28
  36. package/dist/node_modules/bullmq/dist/cjs/classes/scripts.js +141 -39
  37. package/dist/node_modules/bullmq/dist/cjs/classes/worker.js +191 -182
  38. package/dist/node_modules/bullmq/dist/cjs/commands/addDelayedJob-6.lua +6 -17
  39. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-11.lua +123 -0
  40. package/dist/node_modules/bullmq/dist/{esm/commands/addParentJob-4.lua → cjs/commands/addParentJob-5.lua} +7 -6
  41. package/dist/node_modules/bullmq/dist/cjs/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  42. package/dist/node_modules/bullmq/dist/cjs/commands/addRepeatableJob-2.lua +2 -2
  43. package/dist/node_modules/bullmq/dist/{esm/commands/addStandardJob-8.lua → cjs/commands/addStandardJob-9.lua} +9 -8
  44. package/dist/node_modules/bullmq/dist/cjs/commands/cleanJobsInSet-3.lua +9 -5
  45. package/dist/node_modules/bullmq/dist/cjs/commands/drain-5.lua +16 -16
  46. package/dist/node_modules/bullmq/dist/cjs/commands/getDependencyCounts-4.lua +31 -0
  47. package/dist/node_modules/bullmq/dist/cjs/commands/getState-8.lua +5 -5
  48. package/dist/node_modules/bullmq/dist/cjs/commands/getStateV2-8.lua +8 -8
  49. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addDelayedJob.lua +23 -0
  50. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobFromScheduler.lua +37 -0
  51. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobWithPriority.lua +2 -2
  52. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanList.lua +4 -2
  53. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanSet.lua +3 -11
  54. package/dist/node_modules/bullmq/dist/cjs/commands/includes/collectMetrics.lua +1 -1
  55. package/dist/node_modules/bullmq/dist/cjs/commands/includes/deduplicateJob.lua +63 -18
  56. package/dist/node_modules/bullmq/dist/cjs/commands/includes/filterOutJobsToIgnore.lua +14 -0
  57. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +1 -1
  58. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getOrSetMaxEvents.lua +6 -6
  59. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getPriorityScore.lua +8 -0
  60. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isJobSchedulerJob.lua +15 -0
  61. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isLocked.lua +1 -0
  62. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  63. package/dist/node_modules/bullmq/dist/cjs/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  64. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWait.lua +45 -0
  65. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  66. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  67. package/dist/node_modules/bullmq/dist/cjs/commands/includes/prepareJobForProcessing.lua +2 -1
  68. package/dist/node_modules/bullmq/dist/cjs/commands/includes/promoteDelayedJobs.lua +7 -3
  69. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  70. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  71. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJob.lua +2 -2
  72. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobKeys.lua +2 -2
  73. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobWithChildren.lua +95 -0
  74. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeListJobs.lua +7 -1
  75. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeParentDependencyKey.lua +5 -5
  76. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeZSetJobs.lua +2 -8
  77. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJob.lua +2 -2
  78. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJobScheduler.lua +52 -0
  79. package/dist/node_modules/bullmq/dist/cjs/commands/includes/trimEvents.lua +1 -1
  80. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateExistingJobsParent.lua +1 -1
  81. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateJobFields.lua +5 -5
  82. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  83. package/dist/node_modules/bullmq/dist/cjs/commands/isFinished-3.lua +2 -2
  84. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-9.lua +63 -0
  85. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-8.lua +109 -0
  86. package/dist/node_modules/bullmq/dist/cjs/commands/moveToActive-11.lua +3 -2
  87. package/dist/node_modules/bullmq/dist/cjs/commands/moveToFinished-14.lua +52 -52
  88. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-8.lua +106 -0
  89. package/dist/node_modules/bullmq/dist/cjs/commands/removeJob-2.lua +18 -66
  90. package/dist/node_modules/bullmq/dist/cjs/commands/removeJobScheduler-3.lua +1 -1
  91. package/dist/node_modules/bullmq/dist/cjs/commands/removeUnprocessedChildren-2.lua +31 -0
  92. package/dist/node_modules/bullmq/dist/cjs/commands/retryJob-11.lua +11 -5
  93. package/dist/node_modules/bullmq/dist/cjs/commands/updateJobScheduler-12.lua +90 -0
  94. package/dist/node_modules/bullmq/dist/cjs/commands/updateRepeatableJobMillis-1.lua +1 -1
  95. package/dist/node_modules/bullmq/dist/cjs/enums/child-command.js +2 -0
  96. package/dist/node_modules/bullmq/dist/cjs/enums/error-code.js +2 -1
  97. package/dist/node_modules/bullmq/dist/cjs/enums/parent-command.js +5 -2
  98. package/dist/node_modules/bullmq/dist/cjs/index.js +1 -1
  99. package/dist/node_modules/bullmq/dist/cjs/interfaces/index.js +2 -1
  100. package/dist/node_modules/bullmq/dist/cjs/interfaces/{debounce-options.js → parent-options.js} +1 -1
  101. package/dist/node_modules/bullmq/dist/cjs/interfaces/receiver.js +3 -0
  102. package/dist/node_modules/bullmq/dist/cjs/scripts/addDelayedJob-6.js +163 -84
  103. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-11.js +465 -0
  104. package/dist/node_modules/bullmq/dist/cjs/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  105. package/dist/node_modules/bullmq/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  106. package/dist/node_modules/bullmq/dist/cjs/scripts/addRepeatableJob-2.js +18 -13
  107. package/dist/node_modules/bullmq/dist/cjs/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  108. package/dist/node_modules/bullmq/dist/cjs/scripts/changeDelay-4.js +7 -7
  109. package/dist/node_modules/bullmq/dist/cjs/scripts/changePriority-7.js +8 -2
  110. package/dist/node_modules/bullmq/dist/cjs/scripts/cleanJobsInSet-3.js +45 -29
  111. package/dist/node_modules/bullmq/dist/cjs/scripts/drain-5.js +49 -35
  112. package/dist/node_modules/bullmq/dist/cjs/scripts/getDependencyCounts-4.js +37 -0
  113. package/dist/node_modules/bullmq/dist/cjs/scripts/getState-8.js +5 -5
  114. package/dist/node_modules/bullmq/dist/cjs/scripts/getStateV2-8.js +8 -8
  115. package/dist/node_modules/bullmq/dist/cjs/scripts/index.js +10 -7
  116. package/dist/node_modules/bullmq/dist/cjs/scripts/isFinished-3.js +2 -2
  117. package/dist/node_modules/bullmq/dist/cjs/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  118. package/dist/node_modules/bullmq/dist/cjs/scripts/moveJobsToWait-8.js +6 -6
  119. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-8.js +171 -0
  120. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToActive-11.js +18 -8
  121. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToDelayed-8.js +12 -12
  122. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToFinished-14.js +218 -155
  123. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-8.js +529 -0
  124. package/dist/node_modules/bullmq/dist/cjs/scripts/obliterate-2.js +33 -20
  125. package/dist/node_modules/bullmq/dist/cjs/scripts/pause-7.js +1 -1
  126. package/dist/node_modules/bullmq/dist/cjs/scripts/promote-9.js +8 -2
  127. package/dist/node_modules/bullmq/dist/cjs/scripts/removeChildDependency-1.js +7 -7
  128. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJob-2.js +120 -63
  129. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJobScheduler-3.js +3 -3
  130. package/dist/node_modules/bullmq/dist/cjs/scripts/removeRepeatable-3.js +2 -2
  131. package/dist/node_modules/bullmq/dist/cjs/scripts/removeUnprocessedChildren-2.js +339 -0
  132. package/dist/node_modules/bullmq/dist/cjs/scripts/reprocessJob-8.js +6 -6
  133. package/dist/node_modules/bullmq/dist/cjs/scripts/retryJob-11.js +47 -26
  134. package/dist/node_modules/bullmq/dist/cjs/scripts/updateJobScheduler-12.js +274 -0
  135. package/dist/node_modules/bullmq/dist/cjs/scripts/updateProgress-3.js +6 -6
  136. package/dist/node_modules/bullmq/dist/cjs/scripts/updateRepeatableJobMillis-1.js +1 -1
  137. package/dist/node_modules/bullmq/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  138. package/dist/node_modules/bullmq/dist/cjs/types/deduplication-options.js +3 -0
  139. package/dist/node_modules/bullmq/dist/cjs/types/index.js +3 -0
  140. package/dist/node_modules/bullmq/dist/cjs/types/job-progress.js +3 -0
  141. package/dist/node_modules/bullmq/dist/cjs/types/script-queue-context.js +3 -0
  142. package/dist/node_modules/bullmq/dist/cjs/utils.js +29 -1
  143. package/dist/node_modules/bullmq/dist/cjs/version.js +1 -1
  144. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.d.ts +1 -1
  145. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.js +18 -5
  146. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.d.ts +1 -1
  147. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.js +7 -2
  148. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.d.ts +3 -2
  149. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.js +59 -5
  150. package/dist/node_modules/bullmq/dist/esm/classes/child.js +3 -1
  151. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.d.ts +2 -1
  152. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.js +2 -1
  153. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.d.ts +10 -0
  154. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.js +15 -0
  155. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.d.ts +3 -9
  156. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.js +21 -5
  157. package/dist/node_modules/bullmq/dist/esm/classes/index.d.ts +1 -0
  158. package/dist/node_modules/bullmq/dist/esm/classes/index.js +1 -0
  159. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.d.ts +2 -2
  160. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.js +88 -62
  161. package/dist/node_modules/bullmq/dist/esm/classes/job.d.ts +69 -19
  162. package/dist/node_modules/bullmq/dist/esm/classes/job.js +217 -110
  163. package/dist/node_modules/bullmq/dist/esm/classes/main-base.d.ts +2 -3
  164. package/dist/node_modules/bullmq/dist/esm/classes/main-base.js +1 -1
  165. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.d.ts +2 -5
  166. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.js +11 -10
  167. package/dist/node_modules/bullmq/dist/esm/classes/queue-events-producer.d.ts +2 -2
  168. package/dist/node_modules/bullmq/dist/esm/classes/queue-events.d.ts +118 -29
  169. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.d.ts +20 -13
  170. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.js +34 -14
  171. package/dist/node_modules/bullmq/dist/esm/classes/queue.d.ts +19 -16
  172. package/dist/node_modules/bullmq/dist/esm/classes/queue.js +19 -13
  173. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.d.ts +7 -3
  174. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.js +16 -9
  175. package/dist/node_modules/bullmq/dist/esm/classes/repeat.js +1 -1
  176. package/dist/node_modules/bullmq/dist/esm/classes/sandbox.js +54 -28
  177. package/dist/node_modules/bullmq/dist/esm/classes/scripts.d.ts +20 -13
  178. package/dist/node_modules/bullmq/dist/esm/classes/scripts.js +141 -39
  179. package/dist/node_modules/bullmq/dist/esm/classes/worker.d.ts +28 -7
  180. package/dist/node_modules/bullmq/dist/esm/classes/worker.js +192 -183
  181. package/dist/node_modules/bullmq/dist/esm/commands/addDelayedJob-6.lua +6 -17
  182. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-11.lua +123 -0
  183. package/dist/node_modules/bullmq/dist/{cjs/commands/addParentJob-4.lua → esm/commands/addParentJob-5.lua} +7 -6
  184. package/dist/node_modules/bullmq/dist/esm/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  185. package/dist/node_modules/bullmq/dist/esm/commands/addRepeatableJob-2.lua +2 -2
  186. package/dist/node_modules/bullmq/dist/{cjs/commands/addStandardJob-8.lua → esm/commands/addStandardJob-9.lua} +9 -8
  187. package/dist/node_modules/bullmq/dist/esm/commands/cleanJobsInSet-3.lua +9 -5
  188. package/dist/node_modules/bullmq/dist/esm/commands/drain-5.lua +16 -16
  189. package/dist/node_modules/bullmq/dist/esm/commands/getDependencyCounts-4.lua +31 -0
  190. package/dist/node_modules/bullmq/dist/esm/commands/getState-8.lua +5 -5
  191. package/dist/node_modules/bullmq/dist/esm/commands/getStateV2-8.lua +8 -8
  192. package/dist/node_modules/bullmq/dist/esm/commands/includes/addDelayedJob.lua +23 -0
  193. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobFromScheduler.lua +37 -0
  194. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobWithPriority.lua +2 -2
  195. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanList.lua +4 -2
  196. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanSet.lua +3 -11
  197. package/dist/node_modules/bullmq/dist/esm/commands/includes/collectMetrics.lua +1 -1
  198. package/dist/node_modules/bullmq/dist/esm/commands/includes/deduplicateJob.lua +63 -18
  199. package/dist/node_modules/bullmq/dist/esm/commands/includes/filterOutJobsToIgnore.lua +14 -0
  200. package/dist/node_modules/bullmq/dist/esm/commands/includes/getNextDelayedTimestamp.lua +1 -1
  201. package/dist/node_modules/bullmq/dist/esm/commands/includes/getOrSetMaxEvents.lua +6 -6
  202. package/dist/node_modules/bullmq/dist/esm/commands/includes/getPriorityScore.lua +8 -0
  203. package/dist/node_modules/bullmq/dist/esm/commands/includes/isJobSchedulerJob.lua +15 -0
  204. package/dist/node_modules/bullmq/dist/esm/commands/includes/isLocked.lua +1 -0
  205. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  206. package/dist/node_modules/bullmq/dist/esm/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  207. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWait.lua +45 -0
  208. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  209. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  210. package/dist/node_modules/bullmq/dist/esm/commands/includes/prepareJobForProcessing.lua +2 -1
  211. package/dist/node_modules/bullmq/dist/esm/commands/includes/promoteDelayedJobs.lua +7 -3
  212. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  213. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  214. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJob.lua +2 -2
  215. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobKeys.lua +2 -2
  216. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobWithChildren.lua +95 -0
  217. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeListJobs.lua +7 -1
  218. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeParentDependencyKey.lua +5 -5
  219. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeZSetJobs.lua +2 -8
  220. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJob.lua +2 -2
  221. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJobScheduler.lua +52 -0
  222. package/dist/node_modules/bullmq/dist/esm/commands/includes/trimEvents.lua +1 -1
  223. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateExistingJobsParent.lua +1 -1
  224. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateJobFields.lua +5 -5
  225. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  226. package/dist/node_modules/bullmq/dist/esm/commands/isFinished-3.lua +2 -2
  227. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-9.lua +63 -0
  228. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-8.lua +109 -0
  229. package/dist/node_modules/bullmq/dist/esm/commands/moveToActive-11.lua +3 -2
  230. package/dist/node_modules/bullmq/dist/esm/commands/moveToFinished-14.lua +52 -52
  231. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-8.lua +106 -0
  232. package/dist/node_modules/bullmq/dist/esm/commands/removeJob-2.lua +18 -66
  233. package/dist/node_modules/bullmq/dist/esm/commands/removeJobScheduler-3.lua +1 -1
  234. package/dist/node_modules/bullmq/dist/esm/commands/removeUnprocessedChildren-2.lua +31 -0
  235. package/dist/node_modules/bullmq/dist/esm/commands/retryJob-11.lua +11 -5
  236. package/dist/node_modules/bullmq/dist/esm/commands/updateJobScheduler-12.lua +90 -0
  237. package/dist/node_modules/bullmq/dist/esm/commands/updateRepeatableJobMillis-1.lua +1 -1
  238. package/dist/node_modules/bullmq/dist/esm/enums/child-command.d.ts +3 -1
  239. package/dist/node_modules/bullmq/dist/esm/enums/child-command.js +2 -0
  240. package/dist/node_modules/bullmq/dist/esm/enums/error-code.d.ts +3 -2
  241. package/dist/node_modules/bullmq/dist/esm/enums/error-code.js +2 -1
  242. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.d.ts +5 -2
  243. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.js +5 -2
  244. package/dist/node_modules/bullmq/dist/esm/interfaces/backoff-options.d.ts +5 -0
  245. package/dist/node_modules/bullmq/dist/esm/interfaces/base-job-options.d.ts +3 -9
  246. package/dist/node_modules/bullmq/dist/esm/interfaces/child-message.d.ts +1 -0
  247. package/dist/node_modules/bullmq/dist/esm/interfaces/index.d.ts +2 -1
  248. package/dist/node_modules/bullmq/dist/esm/interfaces/index.js +2 -1
  249. package/dist/node_modules/bullmq/dist/esm/interfaces/job-json.d.ts +6 -2
  250. package/dist/node_modules/bullmq/dist/esm/interfaces/job-scheduler-json.d.ts +7 -4
  251. package/dist/node_modules/bullmq/dist/esm/interfaces/minimal-job.d.ts +34 -15
  252. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.d.ts +11 -0
  253. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.js +2 -0
  254. package/dist/node_modules/bullmq/dist/esm/interfaces/parent.d.ts +6 -2
  255. package/dist/node_modules/bullmq/dist/esm/interfaces/queue-options.d.ts +15 -6
  256. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.d.ts +4 -0
  257. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.js +2 -0
  258. package/dist/node_modules/bullmq/dist/esm/interfaces/repeat-options.d.ts +1 -2
  259. package/dist/node_modules/bullmq/dist/esm/interfaces/repeatable-options.d.ts +2 -0
  260. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-job.d.ts +3 -2
  261. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-options.d.ts +1 -1
  262. package/dist/node_modules/bullmq/dist/esm/interfaces/telemetry.d.ts +18 -15
  263. package/dist/node_modules/bullmq/dist/esm/interfaces/worker-options.d.ts +10 -10
  264. package/dist/node_modules/bullmq/dist/esm/scripts/addDelayedJob-6.js +163 -84
  265. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-11.js +462 -0
  266. package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  267. package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  268. package/dist/node_modules/bullmq/dist/esm/scripts/addRepeatableJob-2.js +18 -13
  269. package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  270. package/dist/node_modules/bullmq/dist/esm/scripts/changeDelay-4.js +7 -7
  271. package/dist/node_modules/bullmq/dist/esm/scripts/changePriority-7.js +8 -2
  272. package/dist/node_modules/bullmq/dist/esm/scripts/cleanJobsInSet-3.js +45 -29
  273. package/dist/node_modules/bullmq/dist/esm/scripts/drain-5.js +49 -35
  274. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.d.ts +5 -0
  275. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.js +34 -0
  276. package/dist/node_modules/bullmq/dist/esm/scripts/getState-8.js +5 -5
  277. package/dist/node_modules/bullmq/dist/esm/scripts/getStateV2-8.js +8 -8
  278. package/dist/node_modules/bullmq/dist/esm/scripts/index.d.ts +10 -7
  279. package/dist/node_modules/bullmq/dist/esm/scripts/index.js +10 -7
  280. package/dist/node_modules/bullmq/dist/esm/scripts/isFinished-3.js +2 -2
  281. package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  282. package/dist/node_modules/bullmq/dist/esm/scripts/moveJobsToWait-8.js +6 -6
  283. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-8.js +168 -0
  284. package/dist/node_modules/bullmq/dist/esm/scripts/moveToActive-11.js +18 -8
  285. package/dist/node_modules/bullmq/dist/esm/scripts/moveToDelayed-8.js +12 -12
  286. package/dist/node_modules/bullmq/dist/esm/scripts/moveToFinished-14.js +218 -155
  287. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-8.js +526 -0
  288. package/dist/node_modules/bullmq/dist/esm/scripts/obliterate-2.js +33 -20
  289. package/dist/node_modules/bullmq/dist/esm/scripts/pause-7.js +1 -1
  290. package/dist/node_modules/bullmq/dist/esm/scripts/promote-9.js +8 -2
  291. package/dist/node_modules/bullmq/dist/esm/scripts/removeChildDependency-1.js +7 -7
  292. package/dist/node_modules/bullmq/dist/esm/scripts/removeJob-2.js +120 -63
  293. package/dist/node_modules/bullmq/dist/esm/scripts/removeJobScheduler-3.js +3 -3
  294. package/dist/node_modules/bullmq/dist/esm/scripts/removeRepeatable-3.js +2 -2
  295. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.d.ts +5 -0
  296. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.js +336 -0
  297. package/dist/node_modules/bullmq/dist/esm/scripts/reprocessJob-8.js +6 -6
  298. package/dist/node_modules/bullmq/dist/esm/scripts/retryJob-11.js +47 -26
  299. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.d.ts +5 -0
  300. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.js +271 -0
  301. package/dist/node_modules/bullmq/dist/esm/scripts/updateProgress-3.js +6 -6
  302. package/dist/node_modules/bullmq/dist/esm/scripts/updateRepeatableJobMillis-1.js +1 -1
  303. package/dist/node_modules/bullmq/dist/esm/tsconfig.tsbuildinfo +1 -1
  304. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.d.ts +22 -0
  305. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.js +2 -0
  306. package/dist/node_modules/bullmq/dist/esm/types/index.d.ts +3 -0
  307. package/dist/node_modules/bullmq/dist/esm/types/index.js +3 -0
  308. package/dist/node_modules/bullmq/dist/esm/types/job-options.d.ts +19 -8
  309. package/dist/node_modules/bullmq/dist/esm/types/job-progress.d.ts +1 -0
  310. package/dist/node_modules/bullmq/dist/esm/types/job-progress.js +2 -0
  311. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.d.ts +2 -0
  312. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.js +2 -0
  313. package/dist/node_modules/bullmq/dist/esm/utils.d.ts +25 -5
  314. package/dist/node_modules/bullmq/dist/esm/utils.js +27 -0
  315. package/dist/node_modules/bullmq/dist/esm/version.d.ts +1 -1
  316. package/dist/node_modules/bullmq/dist/esm/version.js +1 -1
  317. package/dist/node_modules/bullmq/package.json +1 -1
  318. package/package.json +7 -7
  319. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-2.lua +0 -91
  320. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  321. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKey.lua +0 -11
  322. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  323. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-10.lua +0 -60
  324. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-9.lua +0 -156
  325. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-5.lua +0 -68
  326. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-2.js +0 -237
  327. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-9.js +0 -529
  328. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-5.js +0 -83
  329. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-2.lua +0 -91
  330. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  331. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKey.lua +0 -11
  332. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  333. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-10.lua +0 -60
  334. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-9.lua +0 -156
  335. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-5.lua +0 -68
  336. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.d.ts +0 -13
  337. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.js +0 -2
  338. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-2.js +0 -234
  339. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-9.js +0 -526
  340. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-5.js +0 -80
  341. /package/dist/node_modules/bullmq/dist/esm/scripts/{addJobScheduler-2.d.ts → addJobScheduler-11.d.ts} +0 -0
  342. /package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.d.ts → addParentJob-5.d.ts} +0 -0
  343. /package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-9.d.ts} +0 -0
  344. /package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.d.ts → addStandardJob-9.d.ts} +0 -0
  345. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.d.ts → moveJobFromActiveToWait-9.d.ts} +0 -0
  346. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveStalledJobsToWait-9.d.ts → moveStalledJobsToWait-8.d.ts} +0 -0
  347. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveToWaitingChildren-5.d.ts → moveToWaitingChildren-8.d.ts} +0 -0
@@ -34,15 +34,18 @@ const content = `--[[
34
34
  opts - attempts max attempts
35
35
  opts - maxMetricsSize
36
36
  opts - fpof - fail parent on fail
37
+ opts - cpof - continue parent on fail
37
38
  opts - idof - ignore dependency on fail
38
39
  opts - rdof - remove dependency on fail
40
+ opts - name - worker name
39
41
  Output:
40
42
  0 OK
41
43
  -1 Missing key.
42
44
  -2 Missing lock.
43
45
  -3 Job not in active set
44
- -4 Job has pending dependencies
46
+ -4 Job has pending children
45
47
  -6 Lock is not owned by this client
48
+ -9 Job has failed children
46
49
  Events:
47
50
  'completed/failed'
48
51
  ]]
@@ -51,7 +54,7 @@ local rcall = redis.call
51
54
  --[[
52
55
  Functions to collect metrics based on a current and previous count of jobs.
53
56
  Granualarity is fixed at 1 minute.
54
- ]]
57
+ ]]
55
58
  --[[
56
59
  Function to loop in batches.
57
60
  Just a bit of warning, some commands as ZREM
@@ -109,7 +112,7 @@ local function getNextDelayedTimestamp(delayedKey)
109
112
  local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
110
113
  if #result then
111
114
  local nextTimestamp = tonumber(result[2])
112
- if nextTimestamp ~= nil then
115
+ if nextTimestamp ~= nil then
113
116
  return nextTimestamp / 0x1000
114
117
  end
115
118
  end
@@ -152,7 +155,7 @@ end
152
155
  --[[
153
156
  Function to move job from prioritized state to active.
154
157
  ]]
155
- local function moveJobFromPriorityToActive(priorityKey, activeKey, priorityCounterKey)
158
+ local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
156
159
  local prioritizedJob = rcall("ZPOPMIN", priorityKey)
157
160
  if #prioritizedJob > 0 then
158
161
  rcall("LPUSH", activeKey, prioritizedJob[1])
@@ -166,7 +169,16 @@ end
166
169
  ]]
167
170
  -- Includes
168
171
  --[[
169
- Validate and move parent to active if needed.
172
+ Validate and move parent to a wait status (waiting, delayed or prioritized)
173
+ if no pending dependencies.
174
+ ]]
175
+ -- Includes
176
+ --[[
177
+ Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
178
+ ]]
179
+ -- Includes
180
+ --[[
181
+ Move parent to a wait status (wait, prioritized or delayed)
170
182
  ]]
171
183
  -- Includes
172
184
  --[[
@@ -201,10 +213,16 @@ end
201
213
  Function to add job considering priority.
202
214
  ]]
203
215
  -- Includes
216
+ --[[
217
+ Function to get priority score.
218
+ ]]
219
+ local function getPriorityScore(priority, priorityCounterKey)
220
+ local prioCounter = rcall("INCR", priorityCounterKey)
221
+ return priority * 0x100000000 + prioCounter % 0x100000000
222
+ end
204
223
  local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
205
224
  isPausedOrMaxed)
206
- local prioCounter = rcall("INCR", priorityCounterKey)
207
- local score = priority * 0x100000000 + prioCounter % 0x100000000
225
+ local score = getPriorityScore(priority, priorityCounterKey)
208
226
  rcall("ZADD", prioritizedKey, score, jobId)
209
227
  addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
210
228
  end
@@ -224,58 +242,53 @@ local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
224
242
  end
225
243
  return false
226
244
  end
227
- local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
228
- parentKey, parentId, timestamp)
229
- local isParentActive = rcall("ZSCORE",
230
- parentQueueKey .. ":waiting-children", parentId)
231
- if rcall("SCARD", parentDependenciesKey) == 0 and isParentActive then
232
- rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
233
- local parentWaitKey = parentQueueKey .. ":wait"
234
- local parentPausedKey = parentQueueKey .. ":paused"
235
- local parentActiveKey = parentQueueKey .. ":active"
236
- local parentMetaKey = parentQueueKey .. ":meta"
237
- local parentMarkerKey = parentQueueKey .. ":marker"
238
- local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
239
- local priority = tonumber(jobAttributes[1]) or 0
240
- local delay = tonumber(jobAttributes[2]) or 0
241
- if delay > 0 then
242
- local delayedTimestamp = tonumber(timestamp) + delay
243
- local score = delayedTimestamp * 0x1000
244
- local parentDelayedKey = parentQueueKey .. ":delayed"
245
- rcall("ZADD", parentDelayedKey, score, parentId)
246
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed",
247
- "jobId", parentId, "delay", delayedTimestamp)
248
- addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
245
+ local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
246
+ local parentWaitKey = parentQueueKey .. ":wait"
247
+ local parentPausedKey = parentQueueKey .. ":paused"
248
+ local parentActiveKey = parentQueueKey .. ":active"
249
+ local parentMetaKey = parentQueueKey .. ":meta"
250
+ local parentMarkerKey = parentQueueKey .. ":marker"
251
+ local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
252
+ local priority = tonumber(jobAttributes[1]) or 0
253
+ local delay = tonumber(jobAttributes[2]) or 0
254
+ if delay > 0 then
255
+ local delayedTimestamp = tonumber(timestamp) + delay
256
+ local score = delayedTimestamp * 0x1000
257
+ local parentDelayedKey = parentQueueKey .. ":delayed"
258
+ rcall("ZADD", parentDelayedKey, score, parentId)
259
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
260
+ delayedTimestamp)
261
+ addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
262
+ else
263
+ if priority == 0 then
264
+ local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
265
+ parentWaitKey, parentPausedKey)
266
+ addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
249
267
  else
250
- if priority == 0 then
251
- local parentTarget, isParentPausedOrMaxed =
252
- getTargetQueueList(parentMetaKey, parentActiveKey, parentWaitKey,
253
- parentPausedKey)
254
- addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed,
255
- parentId)
256
- else
257
- local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
258
- addJobWithPriority(parentMarkerKey,
259
- parentQueueKey .. ":prioritized", priority,
260
- parentId, parentQueueKey .. ":pc", isPausedOrMaxed)
261
- end
262
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting",
263
- "jobId", parentId, "prev", "waiting-children")
268
+ local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
269
+ addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
270
+ parentQueueKey .. ":pc", isPausedOrMaxed)
264
271
  end
272
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
273
+ "waiting-children")
265
274
  end
266
275
  end
267
- --[[
268
- Function to remove deduplication key if needed.
269
- ]]
270
- local function removeDeduplicationKeyIfNeeded(prefixKey, deduplicationId)
271
- if deduplicationId then
272
- local deduplicationKey = prefixKey .. "de:" .. deduplicationId
273
- local pttl = rcall("PTTL", deduplicationKey)
274
- if pttl == 0 or pttl == -1 then
275
- rcall("DEL", deduplicationKey)
276
+ local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
277
+ if rcall("EXISTS", parentKey) == 1 then
278
+ local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
279
+ if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
280
+ rcall("ZREM", parentWaitingChildrenKey, parentId)
281
+ moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
276
282
  end
277
283
  end
278
284
  end
285
+ local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
286
+ parentId, timestamp)
287
+ local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
288
+ if doNotHavePendingDependencies then
289
+ moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
290
+ end
291
+ end
279
292
  --[[
280
293
  Functions to remove jobs when removeOnFail option is provided.
281
294
  ]]
@@ -285,21 +298,26 @@ end
285
298
  ]]
286
299
  -- Includes
287
300
  --[[
288
- Function to remove deduplication key.
301
+ Function to remove deduplication key if needed
302
+ when a job is being removed.
289
303
  ]]
290
- local function removeDeduplicationKey(prefixKey, jobKey)
304
+ local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
305
+ jobKey, jobId)
291
306
  local deduplicationId = rcall("HGET", jobKey, "deid")
292
307
  if deduplicationId then
293
308
  local deduplicationKey = prefixKey .. "de:" .. deduplicationId
294
- rcall("DEL", deduplicationKey)
309
+ local currentJobId = rcall('GET', deduplicationKey)
310
+ if currentJobId and currentJobId == jobId then
311
+ return rcall("DEL", deduplicationKey)
312
+ end
295
313
  end
296
314
  end
297
315
  --[[
298
316
  Function to remove job keys.
299
317
  ]]
300
318
  local function removeJobKeys(jobKey)
301
- return rcall("DEL", jobKey, jobKey .. ':logs',
302
- jobKey .. ':dependencies', jobKey .. ':processed', jobKey .. ':failed')
319
+ return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
320
+ jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
303
321
  end
304
322
  --[[
305
323
  Check if this job has a parent. If so we will just remove it from
@@ -317,7 +335,7 @@ end
317
335
  local getJobKeyPrefix = function (jobKey, jobId)
318
336
  return string.sub(jobKey, 0, #jobKey - #jobId)
319
337
  end
320
- local function moveParentToWait(parentPrefix, parentId, emitEvent)
338
+ local function _moveParentToWait(parentPrefix, parentId, emitEvent)
321
339
  local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
322
340
  parentPrefix .. "wait", parentPrefix .. "paused")
323
341
  addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
@@ -345,10 +363,10 @@ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debou
345
363
  rcall("DEL", parentPrefix .. "de:" .. debounceId)
346
364
  end
347
365
  else
348
- moveParentToWait(parentPrefix, parentId)
366
+ _moveParentToWait(parentPrefix, parentId)
349
367
  end
350
368
  else
351
- moveParentToWait(parentPrefix, parentId, true)
369
+ _moveParentToWait(parentPrefix, parentId, true)
352
370
  end
353
371
  end
354
372
  end
@@ -376,10 +394,10 @@ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debou
376
394
  rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
377
395
  end
378
396
  else
379
- moveParentToWait(parentPrefix, parentId)
397
+ _moveParentToWait(parentPrefix, parentId)
380
398
  end
381
399
  else
382
- moveParentToWait(parentPrefix, parentId, true)
400
+ _moveParentToWait(parentPrefix, parentId, true)
383
401
  end
384
402
  end
385
403
  end
@@ -393,7 +411,7 @@ local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
393
411
  local jobKey = baseKey .. jobId
394
412
  removeParentDependencyKey(jobKey, hard, nil, baseKey)
395
413
  if shouldRemoveDeduplicationKey then
396
- removeDeduplicationKey(baseKey, jobKey)
414
+ removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobKey, jobId)
397
415
  end
398
416
  removeJobKeys(jobKey)
399
417
  end
@@ -446,43 +464,69 @@ local function removeJobsOnFail(queueKeyPrefix, failedKey, jobId, opts, timestam
446
464
  end
447
465
  end
448
466
  end
449
- local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
450
- if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
451
- local parentQueuePrefix = parentQueueKey .. ":"
452
- local parentFailedKey = parentQueueKey .. ":failed"
453
- rcall("ZADD", parentFailedKey, timestamp, parentId)
454
- local failedReason = "child " .. jobIdKey .. " failed"
455
- rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
456
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
457
- failedReason, "prev", "waiting-children")
458
- local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
459
- removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
460
- if jobAttributes[1] then
461
- local parentData = cjson.decode(jobAttributes[1])
462
- if parentData['fpof'] then
463
- moveParentFromWaitingChildrenToFailed(
467
+ local moveParentToFailedIfNeeded = function (parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
468
+ if rcall("EXISTS", parentKey) == 1 then
469
+ local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
470
+ local parentDelayedKey = parentQueueKey .. ":delayed"
471
+ local parentPrioritizedKey = parentQueueKey .. ":prioritized"
472
+ local parentWaitingChildrenOrDelayedKey
473
+ local prevState
474
+ if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
475
+ parentWaitingChildrenOrDelayedKey = parentWaitingChildrenKey
476
+ prevState = "waiting-children"
477
+ elseif rcall("ZSCORE", parentDelayedKey, parentId) then
478
+ parentWaitingChildrenOrDelayedKey = parentDelayedKey
479
+ prevState = "delayed"
480
+ rcall("HSET", parentKey, "delay", 0)
481
+ end
482
+ if parentWaitingChildrenOrDelayedKey then
483
+ rcall("ZREM", parentWaitingChildrenOrDelayedKey, parentId)
484
+ local parentQueuePrefix = parentQueueKey .. ":"
485
+ local parentFailedKey = parentQueueKey .. ":failed"
486
+ local deferredFailure = "child " .. jobIdKey .. " failed"
487
+ rcall("HSET", parentKey, "defa", deferredFailure)
488
+ moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
489
+ else
490
+ if not rcall("ZSCORE", parentQueueKey .. ":failed", parentId) then
491
+ local deferredFailure = "child " .. jobIdKey .. " failed"
492
+ rcall("HSET", parentKey, "defa", deferredFailure)
493
+ end
494
+ end
495
+ end
496
+ end
497
+ local moveChildFromDependenciesIfNeeded = function (rawParentData, childKey, failedReason, timestamp)
498
+ if rawParentData then
499
+ local parentData = cjson.decode(rawParentData)
500
+ local parentKey = parentData['queueKey'] .. ':' .. parentData['id']
501
+ local parentDependenciesChildrenKey = parentKey .. ":dependencies"
502
+ if parentData['fpof'] then
503
+ if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
504
+ local parentUnsuccesssfulChildrenKey = parentKey .. ":unsuccessful"
505
+ rcall("ZADD", parentUnsuccesssfulChildrenKey, timestamp, childKey)
506
+ moveParentToFailedIfNeeded(
464
507
  parentData['queueKey'],
465
- parentData['queueKey'] .. ':' .. parentData['id'],
466
- parentData['id'],
467
508
  parentKey,
509
+ parentData['id'],
510
+ childKey,
468
511
  timestamp
469
512
  )
470
- elseif parentData['idof'] or parentData['rdof'] then
471
- local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
472
- local grandParentDependenciesSet = grandParentKey .. ":dependencies"
473
- if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
474
- moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
475
- grandParentKey, parentData['id'], timestamp)
476
- if parentData['idof'] then
477
- local grandParentFailedSet = grandParentKey .. ":failed"
478
- rcall("HSET", grandParentFailedSet, parentKey, failedReason)
479
- end
513
+ end
514
+ elseif parentData['cpof'] then
515
+ if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
516
+ local parentFailedChildrenKey = parentKey .. ":failed"
517
+ rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
518
+ moveParentToWaitIfNeeded(parentData['queueKey'], parentKey, parentData['id'], timestamp)
519
+ end
520
+ elseif parentData['idof'] or parentData['rdof'] then
521
+ if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
522
+ moveParentToWaitIfNoPendingDependencies(parentData['queueKey'], parentDependenciesChildrenKey,
523
+ parentKey, parentData['id'], timestamp)
524
+ if parentData['idof'] then
525
+ local parentFailedChildrenKey = parentKey .. ":failed"
526
+ rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
480
527
  end
481
528
  end
482
529
  end
483
- local parentRawOpts = jobAttributes[3]
484
- local parentOpts = cjson.decode(parentRawOpts)
485
- removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
486
530
  end
487
531
  end
488
532
  --[[
@@ -520,6 +564,8 @@ local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey
520
564
  rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
521
565
  rcall("HINCRBY", jobKey, "ats", 1)
522
566
  addBaseMarkerIfNeeded(markerKey, false)
567
+ -- rate limit delay must be 0 in this case to prevent adding more delay
568
+ -- when job that is moved to active needs to be processed
523
569
  return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
524
570
  end
525
571
  --[[
@@ -541,17 +587,38 @@ local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedK
541
587
  tonumber(rcall("HGET", jobKey, "priority")) or 0
542
588
  if priority == 0 then
543
589
  -- LIFO or FIFO
544
- addJobInTargetList(targetKey, markerKey, "LPUSH", isPaused, jobId)
590
+ rcall("LPUSH", targetKey, jobId)
545
591
  else
546
- addJobWithPriority(markerKey, prioritizedKey, priority,
547
- jobId, priorityCounterKey, isPaused)
592
+ local score = getPriorityScore(priority, priorityCounterKey)
593
+ rcall("ZADD", prioritizedKey, score, jobId)
548
594
  end
549
595
  -- Emit waiting event
550
596
  rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
551
597
  jobId, "prev", "delayed")
552
598
  rcall("HSET", jobKey, "delay", 0)
553
599
  end
600
+ addBaseMarkerIfNeeded(markerKey, isPaused)
601
+ end
602
+ end
603
+ --[[
604
+ Function to remove deduplication key if needed
605
+ when a job is moved to completed or failed states.
606
+ ]]
607
+ local function removeDeduplicationKeyIfNeededOnFinalization(prefixKey,
608
+ deduplicationId, jobId)
609
+ if deduplicationId then
610
+ local deduplicationKey = prefixKey .. "de:" .. deduplicationId
611
+ local pttl = rcall("PTTL", deduplicationKey)
612
+ if pttl == 0 then
613
+ return rcall("DEL", deduplicationKey)
614
+ end
615
+ if pttl == -1 then
616
+ local currentJobId = rcall('GET', deduplicationKey)
617
+ if currentJobId and currentJobId == jobId then
618
+ return rcall("DEL", deduplicationKey)
619
+ end
554
620
  end
621
+ end
555
622
  end
556
623
  local function removeLock(jobKey, stalledKey, token, jobId)
557
624
  if token ~= "0" then
@@ -580,16 +647,16 @@ end
580
647
  Function to get max events value or set by default 10000.
581
648
  ]]
582
649
  local function getOrSetMaxEvents(metaKey)
583
- local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
584
- if not maxEvents then
585
- maxEvents = 10000
586
- rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
587
- end
588
- return maxEvents
650
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
651
+ if not maxEvents then
652
+ maxEvents = 10000
653
+ rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
654
+ end
655
+ return maxEvents
589
656
  end
590
657
  local function trimEvents(metaKey, eventStreamKey)
591
658
  local maxEvents = getOrSetMaxEvents(metaKey)
592
- if maxEvents ~= false then
659
+ if maxEvents then
593
660
  rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
594
661
  else
595
662
  rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
@@ -603,21 +670,31 @@ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDepende
603
670
  parentId, jobIdKey, returnvalue, timestamp )
604
671
  local processedSet = parentKey .. ":processed"
605
672
  rcall("HSET", processedSet, jobIdKey, returnvalue)
606
- moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
673
+ moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
607
674
  end
608
675
  --[[
609
676
  Function to update a bunch of fields in a job.
610
677
  ]]
611
678
  local function updateJobFields(jobKey, msgpackedFields)
612
- if msgpackedFields and #msgpackedFields > 0 then
613
- local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
614
- if fieldsToUpdate then
615
- redis.call("HMSET", jobKey, unpack(fieldsToUpdate))
616
- end
679
+ if msgpackedFields and #msgpackedFields > 0 then
680
+ local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
681
+ if fieldsToUpdate then
682
+ rcall("HMSET", jobKey, unpack(fieldsToUpdate))
617
683
  end
684
+ end
618
685
  end
619
686
  local jobIdKey = KEYS[12]
620
- if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
687
+ if rcall("EXISTS", jobIdKey) == 1 then -- Make sure job exists
688
+ -- Make sure it does not have pending dependencies
689
+ -- It must happen before removing lock
690
+ if ARGV[5] == "completed" then
691
+ if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then
692
+ return -4
693
+ end
694
+ if rcall("ZCARD", jobIdKey .. ":unsuccessful") ~= 0 then
695
+ return -9
696
+ end
697
+ end
621
698
  local opts = cmsgpack.unpack(ARGV[8])
622
699
  local token = opts['token']
623
700
  local errorCode = removeLock(jobIdKey, KEYS[5], token, ARGV[1])
@@ -629,14 +706,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
629
706
  local maxMetricsSize = opts['maxMetricsSize']
630
707
  local maxCount = opts['keepJobs']['count']
631
708
  local maxAge = opts['keepJobs']['age']
632
- if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then -- // Make sure it does not have pending dependencies
633
- return -4
634
- end
635
709
  local jobAttributes = rcall("HMGET", jobIdKey, "parentKey", "parent", "deid")
636
710
  local parentKey = jobAttributes[1] or ""
637
711
  local parentId = ""
638
712
  local parentQueueKey = ""
639
- if jobAttributes[2] ~= false then
713
+ if jobAttributes[2] then -- TODO: need to revisit this logic if it's still needed
640
714
  local jsonDecodedParent = cjson.decode(jobAttributes[2])
641
715
  parentId = jsonDecodedParent['id']
642
716
  parentQueueKey = jsonDecodedParent['queueKey']
@@ -645,13 +719,15 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
645
719
  local timestamp = ARGV[2]
646
720
  -- Remove from active list (if not active we shall return error)
647
721
  local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
648
- if (numRemovedElements < 1) then return -3 end
722
+ if (numRemovedElements < 1) then
723
+ return -3
724
+ end
649
725
  local eventStreamKey = KEYS[4]
650
726
  local metaKey = KEYS[9]
651
727
  -- Trim events before emiting them to avoid trimming events emitted in this script
652
728
  trimEvents(metaKey, eventStreamKey)
653
729
  local prefix = ARGV[7]
654
- removeDeduplicationKeyIfNeeded(prefix, jobAttributes[3])
730
+ removeDeduplicationKeyIfNeededOnFinalization(prefix, jobAttributes[3], jobId)
655
731
  -- If job has a parent we need to
656
732
  -- 1) remove this job id from parents dependencies
657
733
  -- 2) move the job Id to parent "processed" set
@@ -665,26 +741,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
665
741
  if ARGV[5] == "completed" then
666
742
  local dependenciesSet = parentKey .. ":dependencies"
667
743
  if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
668
- updateParentDepsIfNeeded(parentKey, parentQueueKey,
669
- dependenciesSet, parentId, jobIdKey,
670
- ARGV[4], timestamp)
744
+ updateParentDepsIfNeeded(parentKey, parentQueueKey, dependenciesSet, parentId, jobIdKey, ARGV[4],
745
+ timestamp)
671
746
  end
672
747
  else
673
- if opts['fpof'] then
674
- moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey,
675
- parentId, jobIdKey,
676
- timestamp)
677
- elseif opts['idof'] or opts['rdof'] then
678
- local dependenciesSet = parentKey .. ":dependencies"
679
- if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
680
- moveParentToWaitIfNeeded(parentQueueKey, dependenciesSet,
681
- parentKey, parentId, timestamp)
682
- if opts['idof'] then
683
- local failedSet = parentKey .. ":failed"
684
- rcall("HSET", failedSet, jobIdKey, ARGV[4])
685
- end
686
- end
687
- end
748
+ moveChildFromDependenciesIfNeeded(jobAttributes[2], jobIdKey, ARGV[4], timestamp)
688
749
  end
689
750
  end
690
751
  local attemptsMade = rcall("HINCRBY", jobIdKey, "atm", 1)
@@ -693,8 +754,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
693
754
  local targetSet = KEYS[11]
694
755
  -- Add to complete/failed set
695
756
  rcall("ZADD", targetSet, timestamp, jobId)
696
- rcall("HMSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
757
+ rcall("HSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
697
758
  -- "returnvalue" / "failedReason" and "finishedOn"
759
+ if ARGV[5] == "failed" then
760
+ rcall("HDEL", jobIdKey, "defa")
761
+ end
698
762
  -- Remove old jobs?
699
763
  if maxAge ~= nil then
700
764
  removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
@@ -711,12 +775,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
711
775
  removeParentDependencyKey(jobIdKey, false, parentKey, jobAttributes[3])
712
776
  end
713
777
  end
714
- rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3],
715
- ARGV[4])
778
+ rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3], ARGV[4], "prev", "active")
716
779
  if ARGV[5] == "failed" then
717
780
  if tonumber(attemptsMade) >= tonumber(attempts) then
718
- rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId",
719
- jobId, "attemptsMade", attemptsMade)
781
+ rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId", jobId, "attemptsMade",
782
+ attemptsMade)
720
783
  end
721
784
  end
722
785
  -- Collect metrics
@@ -729,14 +792,18 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
729
792
  local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[2], KEYS[1], KEYS[8])
730
793
  local markerKey = KEYS[14]
731
794
  -- Check if there are delayed jobs that can be promoted
732
- promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[3], eventStreamKey, prefix,
733
- timestamp, KEYS[10], isPausedOrMaxed)
795
+ promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[3], eventStreamKey, prefix, timestamp, KEYS[10],
796
+ isPausedOrMaxed)
734
797
  local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
735
798
  -- Check if we are rate limited first.
736
799
  local expireTime = getRateLimitTTL(maxJobs, KEYS[6])
737
- if expireTime > 0 then return {0, 0, expireTime, 0} end
800
+ if expireTime > 0 then
801
+ return {0, 0, expireTime, 0}
802
+ end
738
803
  -- paused or maxed queue
739
- if isPausedOrMaxed then return {0, 0, 0, 0} end
804
+ if isPausedOrMaxed then
805
+ return {0, 0, 0, 0}
806
+ end
740
807
  jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
741
808
  if jobId then
742
809
  -- Markers in waitlist DEPRECATED in v5: Remove in v6.
@@ -745,23 +812,19 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
745
812
  -- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
746
813
  -- but if ID is 0:0, then there is at least 1 prioritized job to process
747
814
  if jobId == "0:0" then
748
- jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2],
749
- KEYS[10])
750
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
751
- timestamp, maxJobs, markerKey,
752
- opts)
815
+ jobId = moveJobFromPrioritizedToActive(KEYS[3], KEYS[2], KEYS[10])
816
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs,
817
+ markerKey, opts)
753
818
  end
754
819
  else
755
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
756
- timestamp, maxJobs, markerKey,
757
- opts)
820
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs, markerKey,
821
+ opts)
758
822
  end
759
823
  else
760
- jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
824
+ jobId = moveJobFromPrioritizedToActive(KEYS[3], KEYS[2], KEYS[10])
761
825
  if jobId then
762
- return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId,
763
- timestamp, maxJobs, markerKey,
764
- opts)
826
+ return prepareJobForProcessing(prefix, KEYS[6], eventStreamKey, jobId, timestamp, maxJobs, markerKey,
827
+ opts)
765
828
  end
766
829
  end
767
830
  -- Return the timestamp for the next delayed job if any.