bullmq 5.44.1 → 5.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/dist/cjs/classes/async-fifo-queue.js.map +1 -1
  2. package/dist/cjs/classes/child-processor.js.map +1 -1
  3. package/dist/cjs/classes/child.js.map +1 -1
  4. package/dist/cjs/classes/flow-producer.js +15 -4
  5. package/dist/cjs/classes/flow-producer.js.map +1 -1
  6. package/dist/cjs/classes/job-scheduler.js +1 -1
  7. package/dist/cjs/classes/job-scheduler.js.map +1 -1
  8. package/dist/cjs/classes/job.js +137 -54
  9. package/dist/cjs/classes/job.js.map +1 -1
  10. package/dist/cjs/classes/queue-base.js +1 -4
  11. package/dist/cjs/classes/queue-base.js.map +1 -1
  12. package/dist/cjs/classes/queue-events-producer.js.map +1 -1
  13. package/dist/cjs/classes/queue-events.js.map +1 -1
  14. package/dist/cjs/classes/queue-getters.js +12 -15
  15. package/dist/cjs/classes/queue-getters.js.map +1 -1
  16. package/dist/cjs/classes/queue-keys.js.map +1 -1
  17. package/dist/cjs/classes/queue.js +12 -13
  18. package/dist/cjs/classes/queue.js.map +1 -1
  19. package/dist/cjs/classes/redis-connection.js +1 -1
  20. package/dist/cjs/classes/redis-connection.js.map +1 -1
  21. package/dist/cjs/classes/repeat.js +1 -1
  22. package/dist/cjs/classes/repeat.js.map +1 -1
  23. package/dist/cjs/classes/scripts.js +18 -7
  24. package/dist/cjs/classes/scripts.js.map +1 -1
  25. package/dist/cjs/classes/worker.js +4 -0
  26. package/dist/cjs/classes/worker.js.map +1 -1
  27. package/dist/cjs/commands/addJobScheduler-11.lua +52 -33
  28. package/dist/cjs/commands/includes/deduplicateJob.lua +16 -17
  29. package/dist/cjs/commands/includes/isLocked.lua +1 -0
  30. package/dist/cjs/commands/includes/moveChildFromDependenciesIfNeeded.lua +79 -0
  31. package/dist/cjs/commands/includes/moveParentToWait.lua +48 -0
  32. package/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  33. package/dist/cjs/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  34. package/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  35. package/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  36. package/dist/cjs/commands/includes/removeJob.lua +2 -2
  37. package/dist/cjs/commands/includes/removeJobWithChildren.lua +94 -0
  38. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +5 -5
  39. package/dist/cjs/commands/includes/storeJob.lua +1 -1
  40. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  41. package/dist/cjs/commands/moveStalledJobsToWait-9.lua +18 -53
  42. package/dist/cjs/commands/moveToFinished-14.lua +43 -51
  43. package/dist/cjs/commands/moveToWaitingChildren-8.lua +5 -32
  44. package/dist/cjs/commands/removeJob-3.lua +14 -72
  45. package/dist/cjs/commands/removeUnprocessedChildren-2.lua +31 -0
  46. package/dist/cjs/commands/updateJobScheduler-12.lua +29 -23
  47. package/dist/cjs/scripts/addDelayedJob-6.js +73 -55
  48. package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
  49. package/dist/cjs/scripts/addJobScheduler-11.js +59 -40
  50. package/dist/cjs/scripts/addJobScheduler-11.js.map +1 -1
  51. package/dist/cjs/scripts/addParentJob-4.js +73 -55
  52. package/dist/cjs/scripts/addParentJob-4.js.map +1 -1
  53. package/dist/cjs/scripts/addPrioritizedJob-8.js +73 -55
  54. package/dist/cjs/scripts/addPrioritizedJob-8.js.map +1 -1
  55. package/dist/cjs/scripts/addRepeatableJob-2.js +14 -9
  56. package/dist/cjs/scripts/addRepeatableJob-2.js.map +1 -1
  57. package/dist/cjs/scripts/addStandardJob-8.js +73 -55
  58. package/dist/cjs/scripts/addStandardJob-8.js.map +1 -1
  59. package/dist/cjs/scripts/cleanJobsInSet-3.js +14 -9
  60. package/dist/cjs/scripts/cleanJobsInSet-3.js.map +1 -1
  61. package/dist/cjs/scripts/drain-5.js +14 -9
  62. package/dist/cjs/scripts/drain-5.js.map +1 -1
  63. package/dist/cjs/scripts/index.js +1 -0
  64. package/dist/cjs/scripts/index.js.map +1 -1
  65. package/dist/cjs/scripts/moveStalledJobsToWait-9.js +157 -155
  66. package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
  67. package/dist/cjs/scripts/moveToFinished-14.js +183 -157
  68. package/dist/cjs/scripts/moveToFinished-14.js.map +1 -1
  69. package/dist/cjs/scripts/moveToWaitingChildren-8.js +145 -137
  70. package/dist/cjs/scripts/moveToWaitingChildren-8.js.map +1 -1
  71. package/dist/cjs/scripts/obliterate-2.js +14 -9
  72. package/dist/cjs/scripts/obliterate-2.js.map +1 -1
  73. package/dist/cjs/scripts/removeChildDependency-1.js +5 -5
  74. package/dist/cjs/scripts/removeJob-3.js +97 -63
  75. package/dist/cjs/scripts/removeJob-3.js.map +1 -1
  76. package/dist/cjs/scripts/removeUnprocessedChildren-2.js +338 -0
  77. package/dist/cjs/scripts/removeUnprocessedChildren-2.js.map +1 -0
  78. package/dist/cjs/scripts/updateJobScheduler-12.js +27 -21
  79. package/dist/cjs/scripts/updateJobScheduler-12.js.map +1 -1
  80. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  81. package/dist/cjs/types/index.js +1 -0
  82. package/dist/cjs/types/index.js.map +1 -1
  83. package/dist/cjs/types/job-progress.js +3 -0
  84. package/dist/cjs/types/job-progress.js.map +1 -0
  85. package/dist/cjs/utils.js +12 -1
  86. package/dist/cjs/utils.js.map +1 -1
  87. package/dist/cjs/version.js +1 -1
  88. package/dist/esm/classes/async-fifo-queue.js.map +1 -1
  89. package/dist/esm/classes/child-processor.js.map +1 -1
  90. package/dist/esm/classes/child.js.map +1 -1
  91. package/dist/esm/classes/flow-producer.js +15 -4
  92. package/dist/esm/classes/flow-producer.js.map +1 -1
  93. package/dist/esm/classes/job-scheduler.js +1 -1
  94. package/dist/esm/classes/job-scheduler.js.map +1 -1
  95. package/dist/esm/classes/job.d.ts +49 -14
  96. package/dist/esm/classes/job.js +138 -55
  97. package/dist/esm/classes/job.js.map +1 -1
  98. package/dist/esm/classes/queue-base.d.ts +1 -4
  99. package/dist/esm/classes/queue-base.js +1 -4
  100. package/dist/esm/classes/queue-base.js.map +1 -1
  101. package/dist/esm/classes/queue-events-producer.d.ts +2 -2
  102. package/dist/esm/classes/queue-events-producer.js.map +1 -1
  103. package/dist/esm/classes/queue-events.d.ts +118 -29
  104. package/dist/esm/classes/queue-events.js.map +1 -1
  105. package/dist/esm/classes/queue-getters.d.ts +11 -14
  106. package/dist/esm/classes/queue-getters.js +12 -15
  107. package/dist/esm/classes/queue-getters.js.map +1 -1
  108. package/dist/esm/classes/queue-keys.js.map +1 -1
  109. package/dist/esm/classes/queue.d.ts +14 -15
  110. package/dist/esm/classes/queue.js +12 -13
  111. package/dist/esm/classes/queue.js.map +1 -1
  112. package/dist/esm/classes/redis-connection.js +1 -1
  113. package/dist/esm/classes/redis-connection.js.map +1 -1
  114. package/dist/esm/classes/repeat.js +1 -1
  115. package/dist/esm/classes/repeat.js.map +1 -1
  116. package/dist/esm/classes/scripts.d.ts +4 -3
  117. package/dist/esm/classes/scripts.js +18 -7
  118. package/dist/esm/classes/scripts.js.map +1 -1
  119. package/dist/esm/classes/worker.d.ts +2 -1
  120. package/dist/esm/classes/worker.js +5 -1
  121. package/dist/esm/classes/worker.js.map +1 -1
  122. package/dist/esm/commands/addJobScheduler-11.lua +52 -33
  123. package/dist/esm/commands/includes/deduplicateJob.lua +16 -17
  124. package/dist/esm/commands/includes/isLocked.lua +1 -0
  125. package/dist/esm/commands/includes/moveChildFromDependenciesIfNeeded.lua +79 -0
  126. package/dist/esm/commands/includes/moveParentToWait.lua +48 -0
  127. package/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  128. package/dist/esm/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  129. package/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  130. package/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  131. package/dist/esm/commands/includes/removeJob.lua +2 -2
  132. package/dist/esm/commands/includes/removeJobWithChildren.lua +94 -0
  133. package/dist/esm/commands/includes/removeParentDependencyKey.lua +5 -5
  134. package/dist/esm/commands/includes/storeJob.lua +1 -1
  135. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  136. package/dist/esm/commands/moveStalledJobsToWait-9.lua +18 -53
  137. package/dist/esm/commands/moveToFinished-14.lua +43 -51
  138. package/dist/esm/commands/moveToWaitingChildren-8.lua +5 -32
  139. package/dist/esm/commands/removeJob-3.lua +14 -72
  140. package/dist/esm/commands/removeUnprocessedChildren-2.lua +31 -0
  141. package/dist/esm/commands/updateJobScheduler-12.lua +29 -23
  142. package/dist/esm/interfaces/job-json.d.ts +5 -2
  143. package/dist/esm/interfaces/minimal-job.d.ts +29 -11
  144. package/dist/esm/interfaces/queue-options.d.ts +6 -2
  145. package/dist/esm/interfaces/repeat-options.d.ts +1 -1
  146. package/dist/esm/interfaces/sandboxed-job.d.ts +2 -2
  147. package/dist/esm/interfaces/sandboxed-options.d.ts +1 -1
  148. package/dist/esm/interfaces/telemetry.d.ts +18 -15
  149. package/dist/esm/interfaces/worker-options.d.ts +10 -10
  150. package/dist/esm/scripts/addDelayedJob-6.js +73 -55
  151. package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
  152. package/dist/esm/scripts/addJobScheduler-11.js +59 -40
  153. package/dist/esm/scripts/addJobScheduler-11.js.map +1 -1
  154. package/dist/esm/scripts/addParentJob-4.js +73 -55
  155. package/dist/esm/scripts/addParentJob-4.js.map +1 -1
  156. package/dist/esm/scripts/addPrioritizedJob-8.js +73 -55
  157. package/dist/esm/scripts/addPrioritizedJob-8.js.map +1 -1
  158. package/dist/esm/scripts/addRepeatableJob-2.js +14 -9
  159. package/dist/esm/scripts/addRepeatableJob-2.js.map +1 -1
  160. package/dist/esm/scripts/addStandardJob-8.js +73 -55
  161. package/dist/esm/scripts/addStandardJob-8.js.map +1 -1
  162. package/dist/esm/scripts/cleanJobsInSet-3.js +14 -9
  163. package/dist/esm/scripts/cleanJobsInSet-3.js.map +1 -1
  164. package/dist/esm/scripts/drain-5.js +14 -9
  165. package/dist/esm/scripts/drain-5.js.map +1 -1
  166. package/dist/esm/scripts/index.d.ts +1 -0
  167. package/dist/esm/scripts/index.js +1 -0
  168. package/dist/esm/scripts/index.js.map +1 -1
  169. package/dist/esm/scripts/moveStalledJobsToWait-9.js +157 -155
  170. package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
  171. package/dist/esm/scripts/moveToFinished-14.js +183 -157
  172. package/dist/esm/scripts/moveToFinished-14.js.map +1 -1
  173. package/dist/esm/scripts/moveToWaitingChildren-8.js +145 -137
  174. package/dist/esm/scripts/moveToWaitingChildren-8.js.map +1 -1
  175. package/dist/esm/scripts/obliterate-2.js +14 -9
  176. package/dist/esm/scripts/obliterate-2.js.map +1 -1
  177. package/dist/esm/scripts/removeChildDependency-1.js +5 -5
  178. package/dist/esm/scripts/removeJob-3.js +97 -63
  179. package/dist/esm/scripts/removeJob-3.js.map +1 -1
  180. package/dist/esm/scripts/removeUnprocessedChildren-2.d.ts +5 -0
  181. package/dist/esm/scripts/removeUnprocessedChildren-2.js +335 -0
  182. package/dist/esm/scripts/removeUnprocessedChildren-2.js.map +1 -0
  183. package/dist/esm/scripts/updateJobScheduler-12.js +27 -21
  184. package/dist/esm/scripts/updateJobScheduler-12.js.map +1 -1
  185. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  186. package/dist/esm/types/index.d.ts +1 -0
  187. package/dist/esm/types/index.js +1 -0
  188. package/dist/esm/types/index.js.map +1 -1
  189. package/dist/esm/types/job-options.d.ts +13 -2
  190. package/dist/esm/types/job-progress.d.ts +1 -0
  191. package/dist/esm/types/job-progress.js +2 -0
  192. package/dist/esm/types/job-progress.js.map +1 -0
  193. package/dist/esm/utils.d.ts +17 -0
  194. package/dist/esm/utils.js +11 -0
  195. package/dist/esm/utils.js.map +1 -1
  196. package/dist/esm/version.d.ts +1 -1
  197. package/dist/esm/version.js +1 -1
  198. package/package.json +26 -21
  199. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -80
  200. package/dist/cjs/commands/includes/removeDeduplicationKey.lua +0 -11
  201. package/dist/cjs/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  202. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -80
  203. package/dist/esm/commands/includes/removeDeduplicationKey.lua +0 -11
  204. package/dist/esm/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "5.44.1",
3
+ "version": "5.52.0",
4
4
  "description": "Queue for messages and jobs based on Redis",
5
5
  "homepage": "https://bullmq.io/",
6
6
  "main": "./dist/cjs/index.js",
@@ -35,15 +35,15 @@
35
35
  "dc:up": "docker-compose -f docker-compose.yml up -d",
36
36
  "dc:down": "docker-compose -f docker-compose.yml down",
37
37
  "dry-run": "npm publish --dry-run",
38
- "eslint:fix": "./node_modules/.bin/eslint . --ignore-path ./.eslintignore --fix",
38
+ "eslint:fix": "./node_modules/.bin/eslint . --fix",
39
39
  "generate:raw:scripts": "ts-node --project tsconfig-cjs.json scripts/generateRawScripts.ts",
40
- "lint": "./node_modules/.bin/eslint . --ignore-path ./.eslintignore",
40
+ "lint": "./node_modules/.bin/eslint .",
41
41
  "lint:staged": "lint-staged",
42
42
  "prepublishOnly": "npm run build",
43
43
  "prepare": "husky install",
44
44
  "pretest": "npm-run-all clean:scripts generate:raw:scripts transform:commands",
45
45
  "prettier": "prettier --config package.json src/**/*.ts",
46
- "pretty:quick": "pretty-quick --ignore-path ./.eslintignore --staged",
46
+ "pretty:quick": "pretty-quick --staged",
47
47
  "semantic-release": "semantic-release",
48
48
  "semantic-release-prepare": "ts-node tools/semantic-release-prepare",
49
49
  "test": "NODE_ENV=test ts-mocha -p tsconfig-cjs.json --config ./.mocharc.js",
@@ -64,12 +64,12 @@
64
64
  "devDependencies": {
65
65
  "@commitlint/cli": "^17.0.3",
66
66
  "@commitlint/config-conventional": "^17.0.3",
67
- "@istanbuljs/nyc-config-typescript": "^0.1.3",
67
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
68
68
  "@semantic-release/changelog": "^6.0.1",
69
- "@semantic-release/commit-analyzer": "^9.0.2",
69
+ "@semantic-release/commit-analyzer": "^13.0.1",
70
70
  "@semantic-release/exec": "^6.0.3",
71
71
  "@semantic-release/git": "^10.0.1",
72
- "@semantic-release/github": "^8.1.0",
72
+ "@semantic-release/github": "^11.0.1",
73
73
  "@semantic-release/npm": "^9.0.1",
74
74
  "@semantic-release/release-notes-generator": "^10.0.3",
75
75
  "@types/chai": "^4.3.1",
@@ -82,43 +82,48 @@
82
82
  "@types/semver": "^7.3.9",
83
83
  "@types/sinon": "^10.0.13",
84
84
  "@types/uuid": "^3.4.10",
85
- "@typescript-eslint/eslint-plugin": "^4.32.0",
86
- "@typescript-eslint/parser": "^5.33.0",
85
+ "@typescript-eslint/eslint-plugin": "^8.28.0",
86
+ "@typescript-eslint/parser": "^8.28.0",
87
87
  "chai": "^4.3.4",
88
88
  "chai-as-promised": "^7.1.1",
89
89
  "commitizen": "^4.2.5",
90
90
  "copyfiles": "^2.4.1",
91
- "coveralls": "^3.1.1",
92
- "eslint": "^7.32.0",
91
+ "coveralls-next": "^4.2.1",
92
+ "eslint": "^9.24.0",
93
93
  "eslint-config-prettier": "^8.5.0",
94
94
  "eslint-plugin-mocha": "^10.1.0",
95
95
  "eslint-plugin-prettier": "4.2.1",
96
- "eslint-plugin-promise": "6.0.0",
97
- "eslint-plugin-tsdoc": "^0.2.16",
98
- "fast-glob": "^3.3.2",
96
+ "eslint-plugin-promise": "^7.2.1",
97
+ "eslint-plugin-tsdoc": "^0.4.0",
98
+ "fast-glob": "^3.3.3",
99
99
  "husky": "^8.0.1",
100
100
  "istanbul": "^0.4.5",
101
- "lint-staged": "13.0.3",
102
- "madge": "^5.0.1",
101
+ "lint-staged": "^15.5.0",
102
+ "madge": "^8.0.0",
103
103
  "minimatch": "^9.0.3",
104
- "mocha": "^10.0.0",
104
+ "mocha": "^11.1.0",
105
105
  "mocha-lcov-reporter": "^1.3.0",
106
106
  "moment": "^2.29.4",
107
107
  "npm-run-all": "^4.1.5",
108
- "nyc": "^15.1.0",
108
+ "nyc": "^17.1.0",
109
109
  "prettier": "^2.7.1",
110
110
  "pretty-quick": "^3.1.3",
111
111
  "progress": "^2.0.3",
112
112
  "rimraf": "^3.0.2",
113
113
  "rrule": "^2.6.9",
114
- "semantic-release": "^19.0.3",
114
+ "semantic-release": "^24.2.3",
115
115
  "sinon": "^18.0.1",
116
116
  "test-console": "^2.0.0",
117
- "ts-mocha": "^10.0.0",
117
+ "ts-mocha": "^11.1.0",
118
118
  "ts-node": "^10.7.0",
119
- "typedoc": "^0.25.0",
119
+ "typedoc": "^0.28.2",
120
120
  "typescript": "^4.7.4"
121
121
  },
122
+ "resolutions": {
123
+ "cross-spawn": "7.0.6",
124
+ "micromatch": "4.0.8",
125
+ "tar": "7.4.3"
126
+ },
122
127
  "nyc": {
123
128
  "extends": "@istanbuljs/nyc-config-typescript",
124
129
  "all": true,
@@ -1,80 +0,0 @@
1
- --[[
2
- Function to recursively move from waitingChildren to failed.
3
- ]]
4
-
5
- -- Includes
6
- --- @include "moveParentToWaitIfNeeded"
7
- --- @include "removeDeduplicationKeyIfNeeded"
8
- --- @include "removeJobsOnFail"
9
-
10
- local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
11
- local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
12
- local parentDelayedKey = parentQueueKey .. ":delayed"
13
- local parentPrioritizedKey = parentQueueKey .. ":prioritized"
14
- local parentWaitingChildrenOrDelayedOrPrioritizedKey
15
- local prevState
16
- if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
17
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentWaitingChildrenKey
18
- prevState = "waiting-children"
19
- elseif rcall("ZSCORE", parentDelayedKey, parentId) then
20
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentDelayedKey
21
- prevState = "delayed"
22
- elseif rcall("ZSCORE", parentPrioritizedKey, parentId) then
23
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentPrioritizedKey
24
- prevState = "prioritized"
25
- end
26
-
27
- if parentWaitingChildrenOrDelayedOrPrioritizedKey then
28
- rcall("ZREM", parentWaitingChildrenOrDelayedOrPrioritizedKey, parentId)
29
- local parentQueuePrefix = parentQueueKey .. ":"
30
- local parentFailedKey = parentQueueKey .. ":failed"
31
- rcall("ZADD", parentFailedKey, timestamp, parentId)
32
- local failedReason = "child " .. jobIdKey .. " failed"
33
- rcall("HSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
34
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
35
- failedReason, "prev", prevState)
36
-
37
- local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
38
-
39
- removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
40
-
41
- if jobAttributes[1] then
42
- local parentData = cjson.decode(jobAttributes[1])
43
- local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
44
- local grandParentUnsuccesssful = grandParentKey .. ":unsuccessful"
45
- rcall("ZADD", grandParentUnsuccesssful, timestamp, parentKey)
46
- if parentData['fpof'] then
47
- moveParentFromWaitingChildrenToFailed(
48
- parentData['queueKey'],
49
- parentData['queueKey'] .. ':' .. parentData['id'],
50
- parentData['id'],
51
- parentKey,
52
- timestamp
53
- )
54
- elseif parentData['idof'] or parentData['rdof'] then
55
- local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
56
- local grandParentDependenciesSet = grandParentKey .. ":dependencies"
57
- if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
58
- moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
59
- grandParentKey, parentData['id'], timestamp)
60
- if parentData['idof'] then
61
- local grandParentFailedSet = grandParentKey .. ":failed"
62
- rcall("HSET", grandParentFailedSet, parentKey, failedReason)
63
- end
64
- end
65
- end
66
- end
67
-
68
- local parentRawOpts = jobAttributes[3]
69
- local parentOpts = cjson.decode(parentRawOpts)
70
-
71
- removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
72
- else
73
- local grandParentKey = rcall("HGET", parentKey, "parentKey")
74
-
75
- if grandParentKey then
76
- local grandParentUnsuccesssfulSet = grandParentKey .. ":unsuccessful"
77
- rcall("ZADD", grandParentUnsuccesssfulSet, timestamp, parentKey)
78
- end
79
- end
80
- end
@@ -1,11 +0,0 @@
1
- --[[
2
- Function to remove deduplication key.
3
- ]]
4
-
5
- local function removeDeduplicationKey(prefixKey, jobKey)
6
- local deduplicationId = rcall("HGET", jobKey, "deid")
7
- if deduplicationId then
8
- local deduplicationKey = prefixKey .. "de:" .. deduplicationId
9
- rcall("DEL", deduplicationKey)
10
- end
11
- end
@@ -1,14 +0,0 @@
1
- --[[
2
- Function to remove deduplication key if needed.
3
- ]]
4
-
5
- local function removeDeduplicationKeyIfNeeded(prefixKey, deduplicationId)
6
- if deduplicationId then
7
- local deduplicationKey = prefixKey .. "de:" .. deduplicationId
8
- local pttl = rcall("PTTL", deduplicationKey)
9
-
10
- if pttl == 0 or pttl == -1 then
11
- rcall("DEL", deduplicationKey)
12
- end
13
- end
14
- end
@@ -1,80 +0,0 @@
1
- --[[
2
- Function to recursively move from waitingChildren to failed.
3
- ]]
4
-
5
- -- Includes
6
- --- @include "moveParentToWaitIfNeeded"
7
- --- @include "removeDeduplicationKeyIfNeeded"
8
- --- @include "removeJobsOnFail"
9
-
10
- local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
11
- local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
12
- local parentDelayedKey = parentQueueKey .. ":delayed"
13
- local parentPrioritizedKey = parentQueueKey .. ":prioritized"
14
- local parentWaitingChildrenOrDelayedOrPrioritizedKey
15
- local prevState
16
- if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
17
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentWaitingChildrenKey
18
- prevState = "waiting-children"
19
- elseif rcall("ZSCORE", parentDelayedKey, parentId) then
20
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentDelayedKey
21
- prevState = "delayed"
22
- elseif rcall("ZSCORE", parentPrioritizedKey, parentId) then
23
- parentWaitingChildrenOrDelayedOrPrioritizedKey = parentPrioritizedKey
24
- prevState = "prioritized"
25
- end
26
-
27
- if parentWaitingChildrenOrDelayedOrPrioritizedKey then
28
- rcall("ZREM", parentWaitingChildrenOrDelayedOrPrioritizedKey, parentId)
29
- local parentQueuePrefix = parentQueueKey .. ":"
30
- local parentFailedKey = parentQueueKey .. ":failed"
31
- rcall("ZADD", parentFailedKey, timestamp, parentId)
32
- local failedReason = "child " .. jobIdKey .. " failed"
33
- rcall("HSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
34
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
35
- failedReason, "prev", prevState)
36
-
37
- local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
38
-
39
- removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
40
-
41
- if jobAttributes[1] then
42
- local parentData = cjson.decode(jobAttributes[1])
43
- local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
44
- local grandParentUnsuccesssful = grandParentKey .. ":unsuccessful"
45
- rcall("ZADD", grandParentUnsuccesssful, timestamp, parentKey)
46
- if parentData['fpof'] then
47
- moveParentFromWaitingChildrenToFailed(
48
- parentData['queueKey'],
49
- parentData['queueKey'] .. ':' .. parentData['id'],
50
- parentData['id'],
51
- parentKey,
52
- timestamp
53
- )
54
- elseif parentData['idof'] or parentData['rdof'] then
55
- local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
56
- local grandParentDependenciesSet = grandParentKey .. ":dependencies"
57
- if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
58
- moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
59
- grandParentKey, parentData['id'], timestamp)
60
- if parentData['idof'] then
61
- local grandParentFailedSet = grandParentKey .. ":failed"
62
- rcall("HSET", grandParentFailedSet, parentKey, failedReason)
63
- end
64
- end
65
- end
66
- end
67
-
68
- local parentRawOpts = jobAttributes[3]
69
- local parentOpts = cjson.decode(parentRawOpts)
70
-
71
- removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
72
- else
73
- local grandParentKey = rcall("HGET", parentKey, "parentKey")
74
-
75
- if grandParentKey then
76
- local grandParentUnsuccesssfulSet = grandParentKey .. ":unsuccessful"
77
- rcall("ZADD", grandParentUnsuccesssfulSet, timestamp, parentKey)
78
- end
79
- end
80
- end
@@ -1,11 +0,0 @@
1
- --[[
2
- Function to remove deduplication key.
3
- ]]
4
-
5
- local function removeDeduplicationKey(prefixKey, jobKey)
6
- local deduplicationId = rcall("HGET", jobKey, "deid")
7
- if deduplicationId then
8
- local deduplicationKey = prefixKey .. "de:" .. deduplicationId
9
- rcall("DEL", deduplicationKey)
10
- end
11
- end
@@ -1,14 +0,0 @@
1
- --[[
2
- Function to remove deduplication key if needed.
3
- ]]
4
-
5
- local function removeDeduplicationKeyIfNeeded(prefixKey, deduplicationId)
6
- if deduplicationId then
7
- local deduplicationKey = prefixKey .. "de:" .. deduplicationId
8
- local pttl = rcall("PTTL", deduplicationKey)
9
-
10
- if pttl == 0 or pttl == -1 then
11
- rcall("DEL", deduplicationKey)
12
- end
13
- end
14
- end