bullmq 4.0.0-beta.1 → 4.0.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.
- package/README.md +156 -22
- package/dist/cjs/classes/async-fifo-queue.js +90 -0
- package/dist/cjs/classes/async-fifo-queue.js.map +1 -0
- package/dist/{classes → cjs/classes}/backoffs.js +10 -9
- package/dist/cjs/classes/backoffs.js.map +1 -0
- package/dist/cjs/classes/child-pool.js +64 -0
- package/dist/cjs/classes/child-pool.js.map +1 -0
- package/dist/cjs/classes/child-processor.js +150 -0
- package/dist/cjs/classes/child-processor.js.map +1 -0
- package/dist/cjs/classes/child.js +216 -0
- package/dist/cjs/classes/child.js.map +1 -0
- package/dist/cjs/classes/delayed-error.js +19 -0
- package/dist/cjs/classes/delayed-error.js.map +1 -0
- package/dist/cjs/classes/flow-producer.js +283 -0
- package/dist/cjs/classes/flow-producer.js.map +1 -0
- package/dist/{classes → cjs/classes}/index.js +11 -3
- package/dist/cjs/classes/index.js.map +1 -0
- package/dist/cjs/classes/job.js +768 -0
- package/dist/cjs/classes/job.js.map +1 -0
- package/dist/cjs/classes/main-base.js +45 -0
- package/dist/cjs/classes/main-base.js.map +1 -0
- package/dist/cjs/classes/main-worker.js +10 -0
- package/dist/cjs/classes/main-worker.js.map +1 -0
- package/dist/cjs/classes/main.js +10 -0
- package/dist/cjs/classes/main.js.map +1 -0
- package/dist/cjs/classes/queue-base.js +135 -0
- package/dist/cjs/classes/queue-base.js.map +1 -0
- package/dist/cjs/classes/queue-events.js +120 -0
- package/dist/cjs/classes/queue-events.js.map +1 -0
- package/dist/cjs/classes/queue-getters.js +347 -0
- package/dist/cjs/classes/queue-getters.js.map +1 -0
- package/dist/cjs/classes/queue-keys.js +45 -0
- package/dist/cjs/classes/queue-keys.js.map +1 -0
- package/dist/cjs/classes/queue.js +275 -0
- package/dist/cjs/classes/queue.js.map +1 -0
- package/dist/cjs/classes/redis-connection.js +207 -0
- package/dist/cjs/classes/redis-connection.js.map +1 -0
- package/dist/cjs/classes/repeat.js +149 -0
- package/dist/cjs/classes/repeat.js.map +1 -0
- package/dist/{classes → cjs/classes}/sandbox.js +18 -14
- package/dist/cjs/classes/sandbox.js.map +1 -0
- package/dist/cjs/classes/scripts.js +658 -0
- package/dist/cjs/classes/scripts.js.map +1 -0
- package/dist/cjs/classes/unrecoverable-error.js +19 -0
- package/dist/cjs/classes/unrecoverable-error.js.map +1 -0
- package/dist/cjs/classes/waiting-children-error.js +19 -0
- package/dist/cjs/classes/waiting-children-error.js.map +1 -0
- package/dist/cjs/classes/worker.js +577 -0
- package/dist/cjs/classes/worker.js.map +1 -0
- package/dist/cjs/commands/addJob-9.lua +170 -0
- package/dist/cjs/commands/changeDelay-3.lua +40 -0
- package/dist/cjs/commands/changePriority-5.lua +52 -0
- package/dist/cjs/commands/cleanJobsInSet-2.lua +48 -0
- package/dist/cjs/commands/drain-4.lua +26 -0
- package/dist/{commands → cjs/commands}/extendLock-2.lua +1 -0
- package/dist/cjs/commands/getCounts-1.lua +35 -0
- package/dist/cjs/commands/getRanges-1.lua +69 -0
- package/dist/cjs/commands/getState-8.lua +66 -0
- package/dist/cjs/commands/getStateV2-8.lua +59 -0
- package/dist/cjs/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
- package/dist/cjs/commands/includes/addJobWithPriority.lua +15 -0
- package/dist/cjs/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
- package/dist/cjs/commands/includes/batches.lua +18 -0
- package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
- package/dist/cjs/commands/includes/checkStalledJobs.lua +139 -0
- package/dist/cjs/commands/includes/cleanList.lua +47 -0
- package/dist/cjs/commands/includes/cleanSet.lua +39 -0
- package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
- package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
- package/dist/cjs/commands/includes/getJobsInZset.lua +12 -0
- package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/cjs/commands/includes/getRateLimitTTL.lua +17 -0
- package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
- package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
- package/dist/cjs/commands/includes/isLocked.lua +31 -0
- package/dist/cjs/commands/includes/moveJobFromPriorityToActive.lua +14 -0
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/cjs/commands/includes/prepareJobForProcessing.lua +74 -0
- package/dist/cjs/commands/includes/promoteDelayedJobs.lua +39 -0
- package/dist/cjs/commands/includes/pushBackJobWithPriority.lua +9 -0
- package/dist/cjs/commands/includes/removeJob.lua +13 -0
- package/dist/cjs/commands/includes/removeJobFromAnyState.lua +35 -0
- package/dist/cjs/commands/includes/removeJobs.lua +25 -0
- package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/cjs/commands/includes/removeParentDependencyKey.lua +77 -0
- package/dist/cjs/commands/includes/removeZSetJobs.lua +15 -0
- package/dist/cjs/commands/includes/trimEvents.lua +12 -0
- package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +40 -0
- package/dist/cjs/commands/index.js +10 -0
- package/dist/cjs/commands/index.js.map +1 -0
- package/dist/cjs/commands/isFinished-3.lua +48 -0
- package/dist/cjs/commands/isJobInList-1.lua +16 -0
- package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +53 -0
- package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/cjs/commands/moveToActive-10.lua +116 -0
- package/dist/cjs/commands/moveToDelayed-8.lua +66 -0
- package/dist/cjs/commands/moveToFinished-13.lua +250 -0
- package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/cjs/commands/obliterate-2.lua +102 -0
- package/dist/cjs/commands/pause-5.lua +36 -0
- package/dist/cjs/commands/promote-7.lua +57 -0
- package/dist/cjs/commands/releaseLock-1.lua +19 -0
- package/dist/cjs/commands/removeJob-1.lua +71 -0
- package/{src → dist/cjs}/commands/removeRepeatable-2.lua +13 -1
- package/dist/cjs/commands/reprocessJob-6.lua +43 -0
- package/dist/cjs/commands/retryJob-9.lua +69 -0
- package/dist/cjs/commands/retryJobs-6.lua +53 -0
- package/dist/cjs/commands/saveStacktrace-1.lua +22 -0
- package/dist/cjs/commands/script-loader.js +408 -0
- package/dist/cjs/commands/script-loader.js.map +1 -0
- package/dist/cjs/commands/updateData-1.lua +20 -0
- package/dist/cjs/commands/updateProgress-2.lua +26 -0
- package/dist/cjs/enums/error-code.enum.js +13 -0
- package/dist/cjs/enums/error-code.enum.js.map +1 -0
- package/dist/cjs/enums/index.js +6 -0
- package/dist/cjs/enums/index.js.map +1 -0
- package/dist/cjs/enums/metrics-time.js +15 -0
- package/dist/cjs/enums/metrics-time.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/advanced-options.js +3 -0
- package/dist/cjs/interfaces/advanced-options.js.map +1 -0
- package/dist/cjs/interfaces/backoff-options.js.map +1 -0
- package/dist/cjs/interfaces/base-job-options.js +3 -0
- package/dist/cjs/interfaces/base-job-options.js.map +1 -0
- package/dist/cjs/interfaces/child-command.js +10 -0
- package/dist/cjs/interfaces/child-command.js.map +1 -0
- package/dist/{interfaces/backoff-opts.js → cjs/interfaces/child-message.js} +1 -1
- package/dist/cjs/interfaces/child-message.js.map +1 -0
- package/dist/{interfaces/redis-opts.js → cjs/interfaces/connection.js} +1 -1
- package/dist/cjs/interfaces/connection.js.map +1 -0
- package/dist/{interfaces/jobs-opts.js → cjs/interfaces/flow-job.js} +1 -1
- package/dist/cjs/interfaces/flow-job.js.map +1 -0
- package/dist/cjs/interfaces/index.js +28 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/interfaces/ioredis-events.js +3 -0
- package/dist/cjs/interfaces/ioredis-events.js.map +1 -0
- package/dist/{interfaces/repeat-opts.js → cjs/interfaces/job-json.js} +1 -1
- package/dist/cjs/interfaces/job-json.js.map +1 -0
- package/dist/{interfaces/worker-opts.js → cjs/interfaces/keep-jobs.js} +1 -1
- package/dist/cjs/interfaces/keep-jobs.js.map +1 -0
- package/dist/cjs/interfaces/metrics-options.js +3 -0
- package/dist/cjs/interfaces/metrics-options.js.map +1 -0
- package/dist/cjs/interfaces/metrics.js +3 -0
- package/dist/cjs/interfaces/metrics.js.map +1 -0
- package/dist/cjs/interfaces/minimal-job.js +3 -0
- package/dist/cjs/interfaces/minimal-job.js.map +1 -0
- package/dist/cjs/interfaces/parent-command.js +15 -0
- package/dist/cjs/interfaces/parent-command.js.map +1 -0
- package/dist/cjs/interfaces/parent-message.js +3 -0
- package/dist/cjs/interfaces/parent-message.js.map +1 -0
- package/dist/cjs/interfaces/parent.js +3 -0
- package/dist/cjs/interfaces/parent.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/queue-options.js +1 -0
- package/dist/cjs/interfaces/queue-options.js.map +1 -0
- package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
- package/dist/cjs/interfaces/redis-options.js.map +1 -0
- package/dist/{interfaces/jobs-options.js → cjs/interfaces/redis-streams.js} +1 -1
- package/dist/cjs/interfaces/redis-streams.js.map +1 -0
- package/dist/cjs/interfaces/repeat-options.js.map +1 -0
- package/dist/cjs/interfaces/sandboxed-job-processor.js +3 -0
- package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
- package/dist/cjs/interfaces/sandboxed-job.js +3 -0
- package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
- package/dist/cjs/interfaces/worker-options.js.map +1 -0
- package/dist/cjs/scripts/addJob-9.js +252 -0
- package/dist/cjs/scripts/addJob-9.js.map +1 -0
- package/dist/cjs/scripts/changeDelay-3.js +41 -0
- package/dist/cjs/scripts/changeDelay-3.js.map +1 -0
- package/dist/cjs/scripts/changePriority-5.js +87 -0
- package/dist/cjs/scripts/changePriority-5.js.map +1 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js +259 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/cjs/scripts/drain-4.js +178 -0
- package/dist/cjs/scripts/drain-4.js.map +1 -0
- package/dist/cjs/scripts/extendLock-2.js +30 -0
- package/dist/cjs/scripts/extendLock-2.js.map +1 -0
- package/dist/cjs/scripts/getCounts-1.js +41 -0
- package/dist/cjs/scripts/getCounts-1.js.map +1 -0
- package/dist/cjs/scripts/getRanges-1.js +72 -0
- package/dist/cjs/scripts/getRanges-1.js.map +1 -0
- package/dist/cjs/scripts/getState-8.js +74 -0
- package/dist/cjs/scripts/getState-8.js.map +1 -0
- package/dist/cjs/scripts/getStateV2-8.js +58 -0
- package/dist/cjs/scripts/getStateV2-8.js.map +1 -0
- package/dist/cjs/scripts/index.js +34 -0
- package/dist/cjs/scripts/index.js.map +1 -0
- package/dist/cjs/scripts/isFinished-3.js +49 -0
- package/dist/cjs/scripts/isFinished-3.js.map +1 -0
- package/dist/cjs/scripts/isJobInList-1.js +32 -0
- package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +70 -0
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js.map +1 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js +289 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/cjs/scripts/moveToActive-10.js +269 -0
- package/dist/cjs/scripts/moveToActive-10.js.map +1 -0
- package/dist/cjs/scripts/moveToDelayed-8.js +152 -0
- package/dist/cjs/scripts/moveToDelayed-8.js.map +1 -0
- package/dist/cjs/scripts/moveToFinished-13.js +624 -0
- package/dist/cjs/scripts/moveToFinished-13.js.map +1 -0
- package/dist/cjs/scripts/moveToWaitingChildren-4.js +59 -0
- package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/cjs/scripts/obliterate-2.js +244 -0
- package/dist/cjs/scripts/obliterate-2.js.map +1 -0
- package/dist/cjs/scripts/pause-5.js +48 -0
- package/dist/cjs/scripts/pause-5.js.map +1 -0
- package/dist/cjs/scripts/promote-7.js +87 -0
- package/dist/cjs/scripts/promote-7.js.map +1 -0
- package/dist/cjs/scripts/releaseLock-1.js +25 -0
- package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
- package/dist/cjs/scripts/removeJob-1.js +210 -0
- package/dist/cjs/scripts/removeJob-1.js.map +1 -0
- package/dist/cjs/scripts/removeRepeatable-2.js +38 -0
- package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/cjs/scripts/reprocessJob-6.js +56 -0
- package/dist/cjs/scripts/reprocessJob-6.js.map +1 -0
- package/dist/cjs/scripts/retryJob-9.js +128 -0
- package/dist/cjs/scripts/retryJob-9.js.map +1 -0
- package/dist/cjs/scripts/retryJobs-6.js +76 -0
- package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
- package/dist/cjs/scripts/saveStacktrace-1.js +27 -0
- package/dist/cjs/scripts/saveStacktrace-1.js.map +1 -0
- package/dist/cjs/scripts/updateData-1.js +26 -0
- package/dist/cjs/scripts/updateData-1.js.map +1 -0
- package/dist/cjs/scripts/updateProgress-2.js +31 -0
- package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/cjs/types/backoff-strategy.js +3 -0
- package/dist/cjs/types/backoff-strategy.js.map +1 -0
- package/dist/cjs/types/finished-status.js +3 -0
- package/dist/cjs/types/finished-status.js.map +1 -0
- package/dist/cjs/types/index.js +11 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/job-json-sandbox.js +3 -0
- package/dist/cjs/types/job-json-sandbox.js.map +1 -0
- package/dist/cjs/types/job-options.js +3 -0
- package/dist/cjs/types/job-options.js.map +1 -0
- package/dist/cjs/types/job-type.js +3 -0
- package/dist/cjs/types/job-type.js.map +1 -0
- package/dist/cjs/types/minimal-queue.js +3 -0
- package/dist/cjs/types/minimal-queue.js.map +1 -0
- package/dist/cjs/types/repeat-strategy.js +3 -0
- package/dist/cjs/types/repeat-strategy.js.map +1 -0
- package/dist/cjs/utils.js +152 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/classes/async-fifo-queue.d.ts +31 -0
- package/dist/esm/classes/async-fifo-queue.js +86 -0
- package/dist/esm/classes/async-fifo-queue.js.map +1 -0
- package/dist/esm/classes/backoffs.d.ts +10 -0
- package/dist/esm/classes/backoffs.js +44 -0
- package/dist/esm/classes/backoffs.js.map +1 -0
- package/dist/esm/classes/child-pool.d.ts +23 -0
- package/dist/esm/classes/child-pool.js +60 -0
- package/dist/esm/classes/child-pool.js.map +1 -0
- package/dist/esm/classes/child-processor.d.ts +26 -0
- package/dist/esm/classes/child-processor.js +146 -0
- package/dist/esm/classes/child-processor.js.map +1 -0
- package/dist/esm/classes/child.d.ts +36 -0
- package/dist/esm/classes/child.js +212 -0
- package/dist/esm/classes/child.js.map +1 -0
- package/dist/esm/classes/delayed-error.d.ts +10 -0
- package/dist/esm/classes/delayed-error.js +15 -0
- package/dist/esm/classes/delayed-error.js.map +1 -0
- package/dist/esm/classes/flow-producer.d.ts +163 -0
- package/dist/esm/classes/flow-producer.js +279 -0
- package/dist/esm/classes/flow-producer.js.map +1 -0
- package/dist/{classes → esm/classes}/index.d.ts +9 -3
- package/dist/esm/classes/index.js +22 -0
- package/dist/esm/classes/index.js.map +1 -0
- package/dist/esm/classes/job.d.ts +355 -0
- package/dist/esm/classes/job.js +764 -0
- package/dist/esm/classes/job.js.map +1 -0
- package/dist/esm/classes/main-base.d.ts +4 -0
- package/dist/esm/classes/main-base.js +43 -0
- package/dist/esm/classes/main-base.js.map +1 -0
- package/dist/esm/classes/main-worker.js +8 -0
- package/dist/esm/classes/main-worker.js.map +1 -0
- package/dist/esm/classes/main.js +8 -0
- package/dist/esm/classes/main.js.map +1 -0
- package/dist/esm/classes/queue-base.d.ts +67 -0
- package/dist/esm/classes/queue-base.js +131 -0
- package/dist/esm/classes/queue-base.js.map +1 -0
- package/dist/esm/classes/queue-events.d.ts +179 -0
- package/dist/esm/classes/queue-events.js +116 -0
- package/dist/esm/classes/queue-events.js.map +1 -0
- package/dist/esm/classes/queue-getters.d.ts +164 -0
- package/dist/esm/classes/queue-getters.js +344 -0
- package/dist/esm/classes/queue-getters.js.map +1 -0
- package/dist/esm/classes/queue-keys.d.ts +10 -0
- package/dist/esm/classes/queue-keys.js +41 -0
- package/dist/esm/classes/queue-keys.js.map +1 -0
- package/dist/esm/classes/queue.d.ts +236 -0
- package/dist/esm/classes/queue.js +271 -0
- package/dist/esm/classes/queue.js.map +1 -0
- package/dist/esm/classes/redis-connection.d.ts +37 -0
- package/dist/esm/classes/redis-connection.js +203 -0
- package/dist/esm/classes/redis-connection.js.map +1 -0
- package/dist/esm/classes/repeat.d.ts +25 -0
- package/dist/esm/classes/repeat.js +144 -0
- package/dist/esm/classes/repeat.js.map +1 -0
- package/dist/esm/classes/sandbox.d.ts +4 -0
- package/dist/esm/classes/sandbox.js +58 -0
- package/dist/esm/classes/sandbox.js.map +1 -0
- package/dist/esm/classes/scripts.d.ts +106 -0
- package/dist/esm/classes/scripts.js +654 -0
- package/dist/esm/classes/scripts.js.map +1 -0
- package/dist/esm/classes/unrecoverable-error.d.ts +10 -0
- package/dist/esm/classes/unrecoverable-error.js +15 -0
- package/dist/esm/classes/unrecoverable-error.js.map +1 -0
- package/dist/esm/classes/waiting-children-error.d.ts +10 -0
- package/dist/esm/classes/waiting-children-error.js +15 -0
- package/dist/esm/classes/waiting-children-error.js.map +1 -0
- package/dist/esm/classes/worker.d.ts +215 -0
- package/dist/esm/classes/worker.js +573 -0
- package/dist/esm/classes/worker.js.map +1 -0
- package/dist/esm/commands/addJob-9.lua +170 -0
- package/dist/esm/commands/changeDelay-3.lua +40 -0
- package/dist/esm/commands/changePriority-5.lua +52 -0
- package/dist/esm/commands/cleanJobsInSet-2.lua +48 -0
- package/dist/esm/commands/drain-4.lua +26 -0
- package/{src → dist/esm}/commands/extendLock-2.lua +1 -0
- package/dist/esm/commands/getCounts-1.lua +35 -0
- package/dist/esm/commands/getRanges-1.lua +69 -0
- package/dist/esm/commands/getState-8.lua +66 -0
- package/dist/esm/commands/getStateV2-8.lua +59 -0
- package/dist/esm/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
- package/dist/esm/commands/includes/addJobWithPriority.lua +15 -0
- package/dist/esm/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
- package/dist/esm/commands/includes/batches.lua +18 -0
- package/dist/esm/commands/includes/checkItemInList.lua +12 -0
- package/dist/esm/commands/includes/checkStalledJobs.lua +139 -0
- package/dist/esm/commands/includes/cleanList.lua +47 -0
- package/dist/esm/commands/includes/cleanSet.lua +39 -0
- package/dist/esm/commands/includes/collectMetrics.lua +46 -0
- package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
- package/dist/esm/commands/includes/getJobsInZset.lua +12 -0
- package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/esm/commands/includes/getRateLimitTTL.lua +17 -0
- package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/esm/commands/includes/getTimestamp.lua +19 -0
- package/dist/esm/commands/includes/getZSetItems.lua +7 -0
- package/dist/esm/commands/includes/isLocked.lua +31 -0
- package/dist/esm/commands/includes/moveJobFromPriorityToActive.lua +14 -0
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/esm/commands/includes/prepareJobForProcessing.lua +74 -0
- package/dist/esm/commands/includes/promoteDelayedJobs.lua +39 -0
- package/dist/esm/commands/includes/pushBackJobWithPriority.lua +9 -0
- package/dist/esm/commands/includes/removeJob.lua +13 -0
- package/dist/esm/commands/includes/removeJobFromAnyState.lua +35 -0
- package/dist/esm/commands/includes/removeJobs.lua +25 -0
- package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/esm/commands/includes/removeParentDependencyKey.lua +77 -0
- package/dist/esm/commands/includes/removeZSetJobs.lua +15 -0
- package/dist/esm/commands/includes/trimEvents.lua +12 -0
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +40 -0
- package/dist/esm/commands/index.d.ts +4 -0
- package/dist/esm/commands/index.js +5 -0
- package/dist/esm/commands/index.js.map +1 -0
- package/dist/esm/commands/isFinished-3.lua +48 -0
- package/dist/esm/commands/isJobInList-1.lua +16 -0
- package/dist/esm/commands/moveJobFromActiveToWait-9.lua +53 -0
- package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/esm/commands/moveToActive-10.lua +116 -0
- package/dist/esm/commands/moveToDelayed-8.lua +66 -0
- package/dist/esm/commands/moveToFinished-13.lua +250 -0
- package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/esm/commands/obliterate-2.lua +102 -0
- package/dist/esm/commands/pause-5.lua +36 -0
- package/dist/esm/commands/promote-7.lua +57 -0
- package/dist/esm/commands/releaseLock-1.lua +19 -0
- package/dist/esm/commands/removeJob-1.lua +71 -0
- package/dist/{commands → esm/commands}/removeRepeatable-2.lua +13 -1
- package/dist/esm/commands/reprocessJob-6.lua +43 -0
- package/dist/esm/commands/retryJob-9.lua +69 -0
- package/dist/esm/commands/retryJobs-6.lua +53 -0
- package/dist/esm/commands/saveStacktrace-1.lua +22 -0
- package/dist/esm/commands/script-loader.d.ts +119 -0
- package/dist/esm/commands/script-loader.js +403 -0
- package/dist/esm/commands/script-loader.js.map +1 -0
- package/dist/esm/commands/updateData-1.lua +20 -0
- package/dist/esm/commands/updateProgress-2.lua +26 -0
- package/dist/esm/enums/error-code.enum.d.ts +8 -0
- package/dist/esm/enums/error-code.enum.js +10 -0
- package/dist/esm/enums/error-code.enum.js.map +1 -0
- package/dist/esm/enums/index.d.ts +2 -0
- package/dist/esm/enums/index.js +3 -0
- package/dist/esm/enums/index.js.map +1 -0
- package/dist/esm/enums/metrics-time.d.ts +10 -0
- package/dist/esm/enums/metrics-time.js +12 -0
- package/dist/esm/enums/metrics-time.js.map +1 -0
- package/dist/{index.d.ts → esm/index.d.ts} +2 -0
- package/{src/index.ts → dist/esm/index.js} +7 -4
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/advanced-options.d.ts +13 -0
- package/dist/esm/interfaces/advanced-options.js +2 -0
- package/dist/esm/interfaces/advanced-options.js.map +1 -0
- package/dist/esm/interfaces/backoff-options.d.ts +15 -0
- package/dist/esm/interfaces/backoff-options.js +2 -0
- package/dist/esm/interfaces/backoff-options.js.map +1 -0
- package/dist/esm/interfaces/base-job-options.d.ts +97 -0
- package/dist/esm/interfaces/base-job-options.js +2 -0
- package/dist/esm/interfaces/base-job-options.js.map +1 -0
- package/dist/esm/interfaces/child-command.d.ts +5 -0
- package/dist/esm/interfaces/child-command.js +7 -0
- package/dist/esm/interfaces/child-command.js.map +1 -0
- package/dist/esm/interfaces/child-message.d.ts +6 -0
- package/dist/esm/interfaces/child-message.js +2 -0
- package/dist/esm/interfaces/child-message.js.map +1 -0
- package/dist/esm/interfaces/connection.d.ts +8 -0
- package/dist/esm/interfaces/connection.js +2 -0
- package/dist/esm/interfaces/connection.js.map +1 -0
- package/dist/esm/interfaces/flow-job.d.ts +19 -0
- package/dist/esm/interfaces/flow-job.js +2 -0
- package/dist/esm/interfaces/flow-job.js.map +1 -0
- package/dist/esm/interfaces/index.d.ts +24 -0
- package/dist/esm/interfaces/index.js +25 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/interfaces/ioredis-events.d.ts +8 -0
- package/dist/esm/interfaces/ioredis-events.js +2 -0
- package/dist/esm/interfaces/ioredis-events.js.map +1 -0
- package/dist/esm/interfaces/job-json.d.ts +37 -0
- package/dist/esm/interfaces/job-json.js +2 -0
- package/dist/esm/interfaces/job-json.js.map +1 -0
- package/dist/esm/interfaces/keep-jobs.d.ts +17 -0
- package/dist/esm/interfaces/keep-jobs.js +2 -0
- package/dist/esm/interfaces/keep-jobs.js.map +1 -0
- package/dist/esm/interfaces/metrics-options.d.ts +12 -0
- package/dist/esm/interfaces/metrics-options.js +2 -0
- package/dist/esm/interfaces/metrics-options.js.map +1 -0
- package/dist/esm/interfaces/metrics.d.ts +9 -0
- package/dist/esm/interfaces/metrics.js +2 -0
- package/dist/esm/interfaces/metrics.js.map +1 -0
- package/dist/esm/interfaces/minimal-job.d.ts +129 -0
- package/dist/esm/interfaces/minimal-job.js +2 -0
- package/dist/esm/interfaces/minimal-job.js.map +1 -0
- package/dist/esm/interfaces/parent-command.d.ts +10 -0
- package/dist/esm/interfaces/parent-command.js +12 -0
- package/dist/esm/interfaces/parent-command.js.map +1 -0
- package/dist/esm/interfaces/parent-message.d.ts +8 -0
- package/dist/esm/interfaces/parent-message.js +2 -0
- package/dist/esm/interfaces/parent-message.js.map +1 -0
- package/dist/esm/interfaces/parent.d.ts +20 -0
- package/dist/esm/interfaces/parent.js +2 -0
- package/dist/esm/interfaces/parent.js.map +1 -0
- package/dist/esm/interfaces/queue-options.d.ts +74 -0
- package/dist/esm/interfaces/queue-options.js +6 -0
- package/dist/esm/interfaces/queue-options.js.map +1 -0
- package/dist/esm/interfaces/rate-limiter-options.d.ts +12 -0
- package/dist/esm/interfaces/rate-limiter-options.js +2 -0
- package/dist/esm/interfaces/rate-limiter-options.js.map +1 -0
- package/dist/esm/interfaces/redis-options.d.ts +7 -0
- package/dist/esm/interfaces/redis-options.js +2 -0
- package/dist/esm/interfaces/redis-options.js.map +1 -0
- package/dist/esm/interfaces/redis-streams.d.ts +4 -0
- package/dist/esm/interfaces/redis-streams.js +2 -0
- package/dist/esm/interfaces/redis-streams.js.map +1 -0
- package/dist/esm/interfaces/repeat-options.d.ts +33 -0
- package/dist/esm/interfaces/repeat-options.js +2 -0
- package/dist/esm/interfaces/repeat-options.js.map +1 -0
- package/dist/esm/interfaces/sandboxed-job-processor.d.ts +5 -0
- package/dist/esm/interfaces/sandboxed-job-processor.js +2 -0
- package/dist/esm/interfaces/sandboxed-job-processor.js.map +1 -0
- package/dist/esm/interfaces/sandboxed-job.d.ts +13 -0
- package/dist/esm/interfaces/sandboxed-job.js +2 -0
- package/dist/esm/interfaces/sandboxed-job.js.map +1 -0
- package/dist/esm/interfaces/worker-options.d.ts +123 -0
- package/dist/esm/interfaces/worker-options.js +2 -0
- package/dist/esm/interfaces/worker-options.js.map +1 -0
- package/dist/esm/scripts/addJob-9.d.ts +5 -0
- package/dist/esm/scripts/addJob-9.js +249 -0
- package/dist/esm/scripts/addJob-9.js.map +1 -0
- package/dist/esm/scripts/changeDelay-3.d.ts +5 -0
- package/dist/esm/scripts/changeDelay-3.js +38 -0
- package/dist/esm/scripts/changeDelay-3.js.map +1 -0
- package/dist/esm/scripts/changePriority-5.d.ts +5 -0
- package/dist/esm/scripts/changePriority-5.js +84 -0
- package/dist/esm/scripts/changePriority-5.js.map +1 -0
- package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js +256 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/esm/scripts/drain-4.d.ts +5 -0
- package/dist/esm/scripts/drain-4.js +175 -0
- package/dist/esm/scripts/drain-4.js.map +1 -0
- package/dist/esm/scripts/extendLock-2.d.ts +5 -0
- package/dist/esm/scripts/extendLock-2.js +27 -0
- package/dist/esm/scripts/extendLock-2.js.map +1 -0
- package/dist/esm/scripts/getCounts-1.d.ts +5 -0
- package/dist/esm/scripts/getCounts-1.js +38 -0
- package/dist/esm/scripts/getCounts-1.js.map +1 -0
- package/dist/esm/scripts/getRanges-1.d.ts +5 -0
- package/dist/esm/scripts/getRanges-1.js +69 -0
- package/dist/esm/scripts/getRanges-1.js.map +1 -0
- package/dist/esm/scripts/getState-8.d.ts +5 -0
- package/dist/esm/scripts/getState-8.js +71 -0
- package/dist/esm/scripts/getState-8.js.map +1 -0
- package/dist/esm/scripts/getStateV2-8.d.ts +5 -0
- package/dist/esm/scripts/getStateV2-8.js +55 -0
- package/dist/esm/scripts/getStateV2-8.js.map +1 -0
- package/dist/esm/scripts/index.d.ts +30 -0
- package/dist/esm/scripts/index.js +31 -0
- package/dist/esm/scripts/index.js.map +1 -0
- package/dist/esm/scripts/isFinished-3.d.ts +5 -0
- package/dist/esm/scripts/isFinished-3.js +46 -0
- package/dist/esm/scripts/isFinished-3.js.map +1 -0
- package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
- package/dist/esm/scripts/isJobInList-1.js +29 -0
- package/dist/esm/scripts/isJobInList-1.js.map +1 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.d.ts +5 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js +67 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js.map +1 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js +286 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/esm/scripts/moveToActive-10.d.ts +5 -0
- package/dist/esm/scripts/moveToActive-10.js +266 -0
- package/dist/esm/scripts/moveToActive-10.js.map +1 -0
- package/dist/esm/scripts/moveToDelayed-8.d.ts +5 -0
- package/dist/esm/scripts/moveToDelayed-8.js +149 -0
- package/dist/esm/scripts/moveToDelayed-8.js.map +1 -0
- package/dist/esm/scripts/moveToFinished-13.d.ts +5 -0
- package/dist/esm/scripts/moveToFinished-13.js +621 -0
- package/dist/esm/scripts/moveToFinished-13.js.map +1 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.js +56 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/esm/scripts/obliterate-2.d.ts +5 -0
- package/dist/esm/scripts/obliterate-2.js +241 -0
- package/dist/esm/scripts/obliterate-2.js.map +1 -0
- package/dist/esm/scripts/pause-5.d.ts +5 -0
- package/dist/esm/scripts/pause-5.js +45 -0
- package/dist/esm/scripts/pause-5.js.map +1 -0
- package/dist/esm/scripts/promote-7.d.ts +5 -0
- package/dist/esm/scripts/promote-7.js +84 -0
- package/dist/esm/scripts/promote-7.js.map +1 -0
- package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
- package/dist/esm/scripts/releaseLock-1.js +22 -0
- package/dist/esm/scripts/releaseLock-1.js.map +1 -0
- package/dist/esm/scripts/removeJob-1.d.ts +5 -0
- package/dist/esm/scripts/removeJob-1.js +207 -0
- package/dist/esm/scripts/removeJob-1.js.map +1 -0
- package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
- package/dist/esm/scripts/removeRepeatable-2.js +35 -0
- package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/esm/scripts/reprocessJob-6.d.ts +5 -0
- package/dist/esm/scripts/reprocessJob-6.js +53 -0
- package/dist/esm/scripts/reprocessJob-6.js.map +1 -0
- package/dist/esm/scripts/retryJob-9.d.ts +5 -0
- package/dist/esm/scripts/retryJob-9.js +125 -0
- package/dist/esm/scripts/retryJob-9.js.map +1 -0
- package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
- package/dist/esm/scripts/retryJobs-6.js +73 -0
- package/dist/esm/scripts/retryJobs-6.js.map +1 -0
- package/dist/esm/scripts/saveStacktrace-1.d.ts +5 -0
- package/dist/esm/scripts/saveStacktrace-1.js +24 -0
- package/dist/esm/scripts/saveStacktrace-1.js.map +1 -0
- package/dist/esm/scripts/updateData-1.d.ts +5 -0
- package/dist/esm/scripts/updateData-1.js +23 -0
- package/dist/esm/scripts/updateData-1.js.map +1 -0
- package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
- package/dist/esm/scripts/updateProgress-2.js +28 -0
- package/dist/esm/scripts/updateProgress-2.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/types/backoff-strategy.d.ts +2 -0
- package/dist/esm/types/backoff-strategy.js +2 -0
- package/dist/esm/types/backoff-strategy.js.map +1 -0
- package/dist/esm/types/finished-status.d.ts +2 -0
- package/dist/esm/types/finished-status.js +2 -0
- package/dist/esm/types/finished-status.js.map +1 -0
- package/dist/esm/types/index.d.ts +7 -0
- package/dist/esm/types/index.js +8 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/job-json-sandbox.d.ts +5 -0
- package/dist/esm/types/job-json-sandbox.js +2 -0
- package/dist/esm/types/job-json-sandbox.js.map +1 -0
- package/dist/esm/types/job-options.d.ts +20 -0
- package/dist/esm/types/job-options.js +2 -0
- package/dist/esm/types/job-options.js.map +1 -0
- package/dist/esm/types/job-type.d.ts +3 -0
- package/dist/esm/types/job-type.js +2 -0
- package/dist/esm/types/job-type.js.map +1 -0
- package/dist/esm/types/minimal-queue.d.ts +2 -0
- package/dist/esm/types/minimal-queue.js +2 -0
- package/dist/esm/types/minimal-queue.js.map +1 -0
- package/dist/esm/types/repeat-strategy.d.ts +2 -0
- package/dist/esm/types/repeat-strategy.js +2 -0
- package/dist/esm/types/repeat-strategy.js.map +1 -0
- package/dist/esm/utils.d.ts +42 -0
- package/dist/esm/utils.js +134 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +181 -60
- package/.travis.yml +0 -32
- package/SUMMARY.md +0 -4
- package/commitlint.config.js +0 -1
- package/dist/classes/backoffs.d.ts +0 -14
- package/dist/classes/backoffs.js.map +0 -1
- package/dist/classes/child-pool.d.ts +0 -22
- package/dist/classes/child-pool.js +0 -98
- package/dist/classes/child-pool.js.map +0 -1
- package/dist/classes/compat.d.ts +0 -316
- package/dist/classes/compat.js +0 -667
- package/dist/classes/compat.js.map +0 -1
- package/dist/classes/index.js.map +0 -1
- package/dist/classes/job.d.ts +0 -93
- package/dist/classes/job.js +0 -351
- package/dist/classes/job.js.map +0 -1
- package/dist/classes/master.js +0 -112
- package/dist/classes/master.js.map +0 -1
- package/dist/classes/queue-base.d.ts +0 -23
- package/dist/classes/queue-base.js +0 -68
- package/dist/classes/queue-base.js.map +0 -1
- package/dist/classes/queue-events.d.ts +0 -8
- package/dist/classes/queue-events.js +0 -59
- package/dist/classes/queue-events.js.map +0 -1
- package/dist/classes/queue-getters.d.ts +0 -38
- package/dist/classes/queue-getters.js +0 -182
- package/dist/classes/queue-getters.js.map +0 -1
- package/dist/classes/queue-keeper.js +0 -103
- package/dist/classes/queue-keeper.js.map +0 -1
- package/dist/classes/queue-scheduler.d.ts +0 -25
- package/dist/classes/queue-scheduler.js +0 -96
- package/dist/classes/queue-scheduler.js.map +0 -1
- package/dist/classes/queue.d.ts +0 -46
- package/dist/classes/queue.js +0 -122
- package/dist/classes/queue.js.map +0 -1
- package/dist/classes/redis-connection.d.ts +0 -17
- package/dist/classes/redis-connection.js +0 -97
- package/dist/classes/redis-connection.js.map +0 -1
- package/dist/classes/repeat.d.ts +0 -26
- package/dist/classes/repeat.js +0 -128
- package/dist/classes/repeat.js.map +0 -1
- package/dist/classes/sandbox.d.ts +0 -2
- package/dist/classes/sandbox.js.map +0 -1
- package/dist/classes/scripts.d.ts +0 -43
- package/dist/classes/scripts.js +0 -296
- package/dist/classes/scripts.js.map +0 -1
- package/dist/classes/worker.d.ts +0 -38
- package/dist/classes/worker.js +0 -231
- package/dist/classes/worker.js.map +0 -1
- package/dist/commands/addJob-8.lua +0 -106
- package/dist/commands/cleanJobsInSet-1.lua +0 -48
- package/dist/commands/index.d.ts +0 -2
- package/dist/commands/index.js +0 -42
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/isFinished-2.lua +0 -22
- package/dist/commands/isJobInList-1.lua +0 -20
- package/dist/commands/moveStalledJobsToWait-8.lua +0 -91
- package/dist/commands/moveToActive-8.lua +0 -79
- package/dist/commands/moveToDelayed-5.lua +0 -39
- package/dist/commands/moveToFinished-6.lua +0 -87
- package/dist/commands/moveToFinished-7.lua +0 -92
- package/dist/commands/pause-4.lua +0 -27
- package/dist/commands/promote-4.lua +0 -49
- package/dist/commands/releaseLock-1.lua +0 -19
- package/dist/commands/removeJob-10.lua +0 -37
- package/dist/commands/reprocessJob-4.lua +0 -36
- package/dist/commands/retryJob-4.lua +0 -34
- package/dist/commands/takeLock-1.lua +0 -17
- package/dist/commands/updateDelaySet-7.lua +0 -71
- package/dist/commands/updateProgress-2.lua +0 -15
- package/dist/enums/index.d.ts +0 -1
- package/dist/enums/index.js +0 -5
- package/dist/enums/index.js.map +0 -1
- package/dist/enums/retry-errors.enum.d.ts +0 -5
- package/dist/enums/retry-errors.enum.js +0 -9
- package/dist/enums/retry-errors.enum.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/advance-opts.js +0 -12
- package/dist/interfaces/advance-opts.js.map +0 -1
- package/dist/interfaces/advanced-options.d.ts +0 -9
- package/dist/interfaces/advanced-options.js +0 -11
- package/dist/interfaces/advanced-options.js.map +0 -1
- package/dist/interfaces/advanced-opts.js +0 -11
- package/dist/interfaces/advanced-opts.js.map +0 -1
- package/dist/interfaces/backoff-options.d.ts +0 -4
- package/dist/interfaces/backoff-options.js.map +0 -1
- package/dist/interfaces/backoff-opts.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -9
- package/dist/interfaces/index.js +0 -6
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/jobs-options.d.ts +0 -16
- package/dist/interfaces/jobs-options.js.map +0 -1
- package/dist/interfaces/jobs-opts.js.map +0 -1
- package/dist/interfaces/queue-keeper-opts.js +0 -3
- package/dist/interfaces/queue-keeper-opts.js.map +0 -1
- package/dist/interfaces/queue-options.d.ts +0 -24
- package/dist/interfaces/queue-options.js.map +0 -1
- package/dist/interfaces/queue-opts.js +0 -8
- package/dist/interfaces/queue-opts.js.map +0 -1
- package/dist/interfaces/queue-scheduler-options.d.ts +0 -5
- package/dist/interfaces/queue-scheduler-options.js +0 -3
- package/dist/interfaces/queue-scheduler-options.js.map +0 -1
- package/dist/interfaces/queue-scheduler-opts.js +0 -3
- package/dist/interfaces/queue-scheduler-opts.js.map +0 -1
- package/dist/interfaces/rate-limiter-options.d.ts +0 -4
- package/dist/interfaces/rate-limiter-options.js.map +0 -1
- package/dist/interfaces/rate-limiter-opts.js +0 -3
- package/dist/interfaces/rate-limiter-opts.js.map +0 -1
- package/dist/interfaces/redis-options.d.ts +0 -7
- package/dist/interfaces/redis-options.js.map +0 -1
- package/dist/interfaces/redis-opts.js.map +0 -1
- package/dist/interfaces/repeat-options.d.ts +0 -11
- package/dist/interfaces/repeat-options.js.map +0 -1
- package/dist/interfaces/repeat-opts.js.map +0 -1
- package/dist/interfaces/worker-options.d.ts +0 -11
- package/dist/interfaces/worker-options.js.map +0 -1
- package/dist/interfaces/worker-opts.js.map +0 -1
- package/dist/test/test_bulk.js +0 -55
- package/dist/test/test_bulk.js.map +0 -1
- package/dist/test/test_child-pool.js +0 -81
- package/dist/test/test_child-pool.js.map +0 -1
- package/dist/test/test_clean.js +0 -124
- package/dist/test/test_clean.js.map +0 -1
- package/dist/test/test_compat.d.ts +0 -1
- package/dist/test/test_compat.js +0 -533
- package/dist/test/test_compat.js.map +0 -1
- package/dist/test/test_connection.d.ts +0 -1
- package/dist/test/test_connection.js +0 -140
- package/dist/test/test_connection.js.map +0 -1
- package/dist/test/test_delay.d.ts +0 -1
- package/dist/test/test_delay.js +0 -186
- package/dist/test/test_delay.js.map +0 -1
- package/dist/test/test_events.d.ts +0 -1
- package/dist/test/test_events.js +0 -147
- package/dist/test/test_events.js.map +0 -1
- package/dist/test/test_getters.d.ts +0 -1
- package/dist/test/test_getters.js +0 -293
- package/dist/test/test_getters.js.map +0 -1
- package/dist/test/test_job.d.ts +0 -1
- package/dist/test/test_job.js +0 -419
- package/dist/test/test_job.js.map +0 -1
- package/dist/test/test_pause.d.ts +0 -1
- package/dist/test/test_pause.js +0 -255
- package/dist/test/test_pause.js.map +0 -1
- package/dist/test/test_queue.d.ts +0 -0
- package/dist/test/test_queue.js +0 -72
- package/dist/test/test_queue.js.map +0 -1
- package/dist/test/test_rate_limiter.d.ts +0 -1
- package/dist/test/test_rate_limiter.js +0 -98
- package/dist/test/test_rate_limiter.js.map +0 -1
- package/dist/test/test_repeat.d.ts +0 -1
- package/dist/test/test_repeat.js +0 -602
- package/dist/test/test_repeat.js.map +0 -1
- package/dist/test/test_sandboxed_process.d.ts +0 -1
- package/dist/test/test_sandboxed_process.js +0 -319
- package/dist/test/test_sandboxed_process.js.map +0 -1
- package/dist/test/test_stalled_jobs.d.ts +0 -1
- package/dist/test/test_stalled_jobs.js +0 -107
- package/dist/test/test_stalled_jobs.js.map +0 -1
- package/dist/test/test_worker.d.ts +0 -1
- package/dist/test/test_worker.js +0 -1182
- package/dist/test/test_worker.js.map +0 -1
- package/dist/utils.d.ts +0 -8
- package/dist/utils.js +0 -31
- package/dist/utils.js.map +0 -1
- package/release.txt +0 -21
- package/src/classes/backoffs.ts +0 -67
- package/src/classes/child-pool.ts +0 -119
- package/src/classes/compat.ts +0 -890
- package/src/classes/index.ts +0 -13
- package/src/classes/job.ts +0 -495
- package/src/classes/master.ts +0 -113
- package/src/classes/queue-base.ts +0 -87
- package/src/classes/queue-events.ts +0 -78
- package/src/classes/queue-getters.ts +0 -213
- package/src/classes/queue-scheduler.ts +0 -125
- package/src/classes/queue.ts +0 -180
- package/src/classes/redis-connection.ts +0 -111
- package/src/classes/repeat.ts +0 -217
- package/src/classes/sandbox.ts +0 -60
- package/src/classes/scripts.ts +0 -468
- package/src/classes/worker.ts +0 -288
- package/src/commands/addJob-8.lua +0 -106
- package/src/commands/cleanJobsInSet-1.lua +0 -48
- package/src/commands/index.ts +0 -62
- package/src/commands/isFinished-2.lua +0 -22
- package/src/commands/isJobInList-1.lua +0 -20
- package/src/commands/moveStalledJobsToWait-8.lua +0 -91
- package/src/commands/moveToActive-8.lua +0 -79
- package/src/commands/moveToDelayed-5.lua +0 -39
- package/src/commands/moveToFinished-7.lua +0 -92
- package/src/commands/pause-4.lua +0 -27
- package/src/commands/promote-4.lua +0 -49
- package/src/commands/releaseLock-1.lua +0 -19
- package/src/commands/removeJob-10.lua +0 -37
- package/src/commands/reprocessJob-4.lua +0 -36
- package/src/commands/retryJob-4.lua +0 -34
- package/src/commands/takeLock-1.lua +0 -17
- package/src/commands/updateDelaySet-7.lua +0 -71
- package/src/commands/updateProgress-2.lua +0 -15
- package/src/enums/index.ts +0 -1
- package/src/enums/retry-errors.enum.ts +0 -5
- package/src/interfaces/advanced-options.ts +0 -28
- package/src/interfaces/backoff-options.ts +0 -4
- package/src/interfaces/index.ts +0 -9
- package/src/interfaces/jobs-options.ts +0 -53
- package/src/interfaces/queue-options.ts +0 -30
- package/src/interfaces/queue-scheduler-options.ts +0 -6
- package/src/interfaces/rate-limiter-options.ts +0 -7
- package/src/interfaces/redis-options.ts +0 -9
- package/src/interfaces/repeat-options.ts +0 -19
- package/src/interfaces/worker-options.ts +0 -13
- package/src/test/fixtures/fixture_processor.js +0 -13
- package/src/test/fixtures/fixture_processor_bar.js +0 -13
- package/src/test/fixtures/fixture_processor_crash.js +0 -16
- package/src/test/fixtures/fixture_processor_exit.js +0 -15
- package/src/test/fixtures/fixture_processor_fail.js +0 -13
- package/src/test/fixtures/fixture_processor_foo.js +0 -13
- package/src/test/fixtures/fixture_processor_progress.js +0 -29
- package/src/test/fixtures/fixture_processor_slow.js +0 -13
- package/src/test/test_bulk.ts +0 -59
- package/src/test/test_child-pool.ts +0 -88
- package/src/test/test_clean.ts +0 -148
- package/src/test/test_compat.ts +0 -640
- package/src/test/test_connection.ts +0 -159
- package/src/test/test_delay.ts +0 -220
- package/src/test/test_events.ts +0 -198
- package/src/test/test_getters.ts +0 -348
- package/src/test/test_job.ts +0 -524
- package/src/test/test_pause.ts +0 -313
- package/src/test/test_queue.ts +0 -70
- package/src/test/test_rate_limiter.ts +0 -113
- package/src/test/test_repeat.ts +0 -783
- package/src/test/test_sandboxed_process.ts +0 -380
- package/src/test/test_stalled_jobs.ts +0 -146
- package/src/test/test_worker.ts +0 -1503
- package/src/utils.ts +0 -28
- package/tsconfig.json +0 -25
- package/tslint.json +0 -23
- /package/dist/{classes/master.d.ts → cjs/classes/main-worker.d.ts} +0 -0
- /package/dist/{test/test_bulk.d.ts → cjs/classes/main.d.ts} +0 -0
- /package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
- /package/dist/{test/test_child-pool.d.ts → esm/classes/main-worker.d.ts} +0 -0
- /package/dist/{test/test_clean.d.ts → esm/classes/main.d.ts} +0 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
const content = `--[[
|
2
|
+
Function to move job from active state to wait.
|
3
|
+
Input:
|
4
|
+
KEYS[1] active key
|
5
|
+
KEYS[2] wait key
|
6
|
+
KEYS[3] stalled key
|
7
|
+
KEYS[4] job lock key
|
8
|
+
KEYS[5] paused key
|
9
|
+
KEYS[6] meta key
|
10
|
+
KEYS[7] limiter key
|
11
|
+
KEYS[8] prioritized key
|
12
|
+
KEYS[9] event key
|
13
|
+
ARGV[1] job id
|
14
|
+
ARGV[2] lock token
|
15
|
+
ARGV[3] job id key
|
16
|
+
]]
|
17
|
+
local rcall = redis.call
|
18
|
+
-- Includes
|
19
|
+
--[[
|
20
|
+
Function to push back job considering priority in front of same prioritized jobs.
|
21
|
+
]]
|
22
|
+
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
|
23
|
+
-- in order to put it at front of same prioritized jobs
|
24
|
+
-- we consider prioritized counter as 0
|
25
|
+
local score = priority * 0x100000000
|
26
|
+
rcall("ZADD", prioritizedKey, score, jobId)
|
27
|
+
end
|
28
|
+
--[[
|
29
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
30
|
+
(since an empty list and !EXISTS are not really the same).
|
31
|
+
]]
|
32
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
33
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
34
|
+
return waitKey, false
|
35
|
+
else
|
36
|
+
return pausedKey, true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
local jobId = ARGV[1]
|
40
|
+
local token = ARGV[2]
|
41
|
+
local lockKey = KEYS[4]
|
42
|
+
local lockToken = rcall("GET", lockKey)
|
43
|
+
local pttl = rcall("PTTL", KEYS[7])
|
44
|
+
if lockToken == token and pttl > 0 then
|
45
|
+
local removed = rcall("LREM", KEYS[1], 1, jobId)
|
46
|
+
if (removed > 0) then
|
47
|
+
local target, paused = getTargetQueueList(KEYS[6], KEYS[2], KEYS[5])
|
48
|
+
rcall("SREM", KEYS[3], jobId)
|
49
|
+
local priority = tonumber(rcall("HGET", ARGV[3], "priority")) or 0
|
50
|
+
if priority > 0 then
|
51
|
+
pushBackJobWithPriority(KEYS[8], priority, jobId)
|
52
|
+
else
|
53
|
+
rcall("RPUSH", target, jobId)
|
54
|
+
end
|
55
|
+
rcall("DEL", lockKey)
|
56
|
+
-- Emit waiting event
|
57
|
+
rcall("XADD", KEYS[9], "*", "event", "waiting", "jobId", jobId)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
return pttl
|
61
|
+
`;
|
62
|
+
export const moveJobFromActiveToWait = {
|
63
|
+
name: 'moveJobFromActiveToWait',
|
64
|
+
content,
|
65
|
+
keys: 9,
|
66
|
+
};
|
67
|
+
//# sourceMappingURL=moveJobFromActiveToWait-9.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"moveJobFromActiveToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveJobFromActiveToWait-9.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Df,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,yBAAyB;IAC/B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -0,0 +1,286 @@
|
|
1
|
+
const content = `--[[
|
2
|
+
Move stalled jobs to wait.
|
3
|
+
Input:
|
4
|
+
KEYS[1] 'stalled' (SET)
|
5
|
+
KEYS[2] 'wait', (LIST)
|
6
|
+
KEYS[3] 'active', (LIST)
|
7
|
+
KEYS[4] 'failed', (ZSET)
|
8
|
+
KEYS[5] 'stalled-check', (KEY)
|
9
|
+
KEYS[6] 'meta', (KEY)
|
10
|
+
KEYS[7] 'paused', (LIST)
|
11
|
+
KEYS[8] 'event stream' (STREAM)
|
12
|
+
ARGV[1] Max stalled job count
|
13
|
+
ARGV[2] queue.toKey('')
|
14
|
+
ARGV[3] timestamp
|
15
|
+
ARGV[4] max check time
|
16
|
+
Events:
|
17
|
+
'stalled' with stalled job id.
|
18
|
+
]] -- Includes
|
19
|
+
--[[
|
20
|
+
Move stalled jobs to wait.
|
21
|
+
Input:
|
22
|
+
stalledKey 'stalled' (SET)
|
23
|
+
waitKey 'wait', (LIST)
|
24
|
+
activeKey 'active', (LIST)
|
25
|
+
failedKey 'failed', (ZSET)
|
26
|
+
stalledCheckKey 'stalled-check', (KEY)
|
27
|
+
metaKey 'meta', (KEY)
|
28
|
+
pausedKey 'paused', (LIST)
|
29
|
+
eventStreamKey 'event stream' (STREAM)
|
30
|
+
maxStalledJobCount Max stalled job count
|
31
|
+
queueKeyPrefix queue.toKey('')
|
32
|
+
timestamp timestamp
|
33
|
+
maxCheckTime max check time
|
34
|
+
Events:
|
35
|
+
'stalled' with stalled job id.
|
36
|
+
]]
|
37
|
+
local rcall = redis.call
|
38
|
+
-- Includes
|
39
|
+
--[[
|
40
|
+
Function to loop in batches.
|
41
|
+
Just a bit of warning, some commands as ZREM
|
42
|
+
could receive a maximum of 7000 parameters per call.
|
43
|
+
]]
|
44
|
+
local function batches(n, batchSize)
|
45
|
+
local i = 0
|
46
|
+
return function()
|
47
|
+
local from = i * batchSize + 1
|
48
|
+
i = i + 1
|
49
|
+
if (from <= n) then
|
50
|
+
local to = math.min(from + batchSize - 1, n)
|
51
|
+
return from, to
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
--[[
|
56
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
57
|
+
(since an empty list and !EXISTS are not really the same).
|
58
|
+
]]
|
59
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
60
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
61
|
+
return waitKey, false
|
62
|
+
else
|
63
|
+
return pausedKey, true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
--[[
|
67
|
+
Function to remove job.
|
68
|
+
]]
|
69
|
+
-- Includes
|
70
|
+
--[[
|
71
|
+
Check if this job has a parent. If so we will just remove it from
|
72
|
+
the parent child list, but if it is the last child we should move the parent to "wait/paused"
|
73
|
+
which requires code from "moveToFinished"
|
74
|
+
]]
|
75
|
+
--[[
|
76
|
+
Functions to destructure job key.
|
77
|
+
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
|
78
|
+
]]
|
79
|
+
local getJobIdFromKey = function (jobKey)
|
80
|
+
return string.match(jobKey, ".*:(.*)")
|
81
|
+
end
|
82
|
+
local getJobKeyPrefix = function (jobKey, jobId)
|
83
|
+
return string.sub(jobKey, 0, #jobKey - #jobId)
|
84
|
+
end
|
85
|
+
local function moveParentToWait(parentPrefix, parentId, emitEvent)
|
86
|
+
local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
|
87
|
+
rcall("RPUSH", parentTarget, parentId)
|
88
|
+
if emitEvent then
|
89
|
+
local parentEventStream = parentPrefix .. "events"
|
90
|
+
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
|
94
|
+
if parentKey then
|
95
|
+
local parentDependenciesKey = parentKey .. ":dependencies"
|
96
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
97
|
+
if result > 0 then
|
98
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
99
|
+
if pendingDependencies == 0 then
|
100
|
+
local parentId = getJobIdFromKey(parentKey)
|
101
|
+
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
|
102
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
103
|
+
if numRemovedElements == 1 then
|
104
|
+
if hard then
|
105
|
+
if parentPrefix == baseKey then
|
106
|
+
removeParentDependencyKey(parentKey, hard, nil, baseKey)
|
107
|
+
rcall("DEL", parentKey, parentKey .. ':logs',
|
108
|
+
parentKey .. ':dependencies', parentKey .. ':processed')
|
109
|
+
else
|
110
|
+
moveParentToWait(parentPrefix, parentId)
|
111
|
+
end
|
112
|
+
else
|
113
|
+
moveParentToWait(parentPrefix, parentId, true)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
else
|
119
|
+
local missedParentKey = rcall("HGET", jobKey, "parentKey")
|
120
|
+
if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
|
121
|
+
local parentDependenciesKey = missedParentKey .. ":dependencies"
|
122
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
123
|
+
if result > 0 then
|
124
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
125
|
+
if pendingDependencies == 0 then
|
126
|
+
local parentId = getJobIdFromKey(missedParentKey)
|
127
|
+
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
|
128
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
129
|
+
if numRemovedElements == 1 then
|
130
|
+
if hard then
|
131
|
+
if parentPrefix == baseKey then
|
132
|
+
removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
|
133
|
+
rcall("DEL", missedParentKey, missedParentKey .. ':logs',
|
134
|
+
missedParentKey .. ':dependencies', missedParentKey .. ':processed')
|
135
|
+
else
|
136
|
+
moveParentToWait(parentPrefix, parentId)
|
137
|
+
end
|
138
|
+
else
|
139
|
+
moveParentToWait(parentPrefix, parentId, true)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
local function removeJob(jobId, hard, baseKey)
|
148
|
+
local jobKey = baseKey .. jobId
|
149
|
+
removeParentDependencyKey(jobKey, hard, nil, baseKey)
|
150
|
+
rcall("DEL", jobKey, jobKey .. ':logs',
|
151
|
+
jobKey .. ':dependencies', jobKey .. ':processed')
|
152
|
+
end
|
153
|
+
--[[
|
154
|
+
Functions to remove jobs by max age.
|
155
|
+
]]
|
156
|
+
-- Includes
|
157
|
+
local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
|
158
|
+
local start = timestamp - maxAge * 1000
|
159
|
+
local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf")
|
160
|
+
for i, jobId in ipairs(jobIds) do
|
161
|
+
removeJob(jobId, false, prefix)
|
162
|
+
end
|
163
|
+
rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
|
164
|
+
end
|
165
|
+
--[[
|
166
|
+
Functions to remove jobs by max count.
|
167
|
+
]]
|
168
|
+
-- Includes
|
169
|
+
local function removeJobsByMaxCount(maxCount, targetSet, prefix)
|
170
|
+
local start = maxCount
|
171
|
+
local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
|
172
|
+
for i, jobId in ipairs(jobIds) do
|
173
|
+
removeJob(jobId, false, prefix)
|
174
|
+
end
|
175
|
+
rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
|
176
|
+
end
|
177
|
+
--[[
|
178
|
+
Function to trim events, default 10000.
|
179
|
+
]]
|
180
|
+
local function trimEvents(metaKey, eventStreamKey)
|
181
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
182
|
+
if maxEvents ~= false then
|
183
|
+
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
|
184
|
+
else
|
185
|
+
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
|
186
|
+
end
|
187
|
+
end
|
188
|
+
-- Check if we need to check for stalled jobs now.
|
189
|
+
local function checkStalledJobs(stalledKey, waitKey, activeKey, failedKey,
|
190
|
+
stalledCheckKey, metaKey, pausedKey,
|
191
|
+
eventStreamKey, maxStalledJobCount,
|
192
|
+
queueKeyPrefix, timestamp, maxCheckTime)
|
193
|
+
if rcall("EXISTS", stalledCheckKey) == 1 then return {{}, {}} end
|
194
|
+
rcall("SET", stalledCheckKey, timestamp, "PX", maxCheckTime)
|
195
|
+
-- Trim events before emiting them to avoid trimming events emitted in this script
|
196
|
+
trimEvents(metaKey, eventStreamKey)
|
197
|
+
-- Move all stalled jobs to wait
|
198
|
+
local stalling = rcall('SMEMBERS', stalledKey)
|
199
|
+
local stalled = {}
|
200
|
+
local failed = {}
|
201
|
+
if (#stalling > 0) then
|
202
|
+
rcall('DEL', stalledKey)
|
203
|
+
local MAX_STALLED_JOB_COUNT = tonumber(maxStalledJobCount)
|
204
|
+
-- Remove from active list
|
205
|
+
for i, jobId in ipairs(stalling) do
|
206
|
+
if string.sub(jobId, 1, 2) == "0:" then
|
207
|
+
-- If the jobId is a delay marker ID we just remove it.
|
208
|
+
rcall("LREM", activeKey, 1, jobId)
|
209
|
+
else
|
210
|
+
local jobKey = queueKeyPrefix .. jobId
|
211
|
+
-- Check that the lock is also missing, then we can handle this job as really stalled.
|
212
|
+
if (rcall("EXISTS", jobKey .. ":lock") == 0) then
|
213
|
+
-- Remove from the active queue.
|
214
|
+
local removed = rcall("LREM", activeKey, 1, jobId)
|
215
|
+
if (removed > 0) then
|
216
|
+
-- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
|
217
|
+
local stalledCount =
|
218
|
+
rcall("HINCRBY", jobKey, "stalledCounter", 1)
|
219
|
+
if (stalledCount > MAX_STALLED_JOB_COUNT) then
|
220
|
+
local rawOpts = rcall("HGET", jobKey, "opts")
|
221
|
+
local opts = cjson.decode(rawOpts)
|
222
|
+
local removeOnFailType = type(opts["removeOnFail"])
|
223
|
+
rcall("ZADD", failedKey, timestamp, jobId)
|
224
|
+
local failedReason =
|
225
|
+
"job stalled more than allowable limit"
|
226
|
+
rcall("HMSET", jobKey, "failedReason", failedReason,
|
227
|
+
"finishedOn", timestamp)
|
228
|
+
rcall("XADD", eventStreamKey, "*", "event",
|
229
|
+
"failed", "jobId", jobId, 'prev', 'active',
|
230
|
+
'failedReason', failedReason)
|
231
|
+
if removeOnFailType == "number" then
|
232
|
+
removeJobsByMaxCount(opts["removeOnFail"],
|
233
|
+
failedKey, queueKeyPrefix)
|
234
|
+
elseif removeOnFailType == "boolean" then
|
235
|
+
if opts["removeOnFail"] then
|
236
|
+
removeJob(jobId, false, queueKeyPrefix)
|
237
|
+
rcall("ZREM", failedKey, jobId)
|
238
|
+
end
|
239
|
+
elseif removeOnFailType ~= "nil" then
|
240
|
+
local maxAge = opts["removeOnFail"]["age"]
|
241
|
+
local maxCount = opts["removeOnFail"]["count"]
|
242
|
+
if maxAge ~= nil then
|
243
|
+
removeJobsByMaxAge(timestamp, maxAge,
|
244
|
+
failedKey, queueKeyPrefix)
|
245
|
+
end
|
246
|
+
if maxCount ~= nil and maxCount > 0 then
|
247
|
+
removeJobsByMaxCount(maxCount, failedKey,
|
248
|
+
queueKeyPrefix)
|
249
|
+
end
|
250
|
+
end
|
251
|
+
table.insert(failed, jobId)
|
252
|
+
else
|
253
|
+
local target =
|
254
|
+
getTargetQueueList(metaKey, waitKey, pausedKey)
|
255
|
+
-- Move the job back to the wait queue, to immediately be picked up by a waiting worker.
|
256
|
+
rcall("RPUSH", target, jobId)
|
257
|
+
rcall("XADD", eventStreamKey, "*", "event",
|
258
|
+
"waiting", "jobId", jobId, 'prev', 'active')
|
259
|
+
-- Emit the stalled event
|
260
|
+
rcall("XADD", eventStreamKey, "*", "event",
|
261
|
+
"stalled", "jobId", jobId)
|
262
|
+
table.insert(stalled, jobId)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
-- Mark potentially stalled jobs
|
270
|
+
local active = rcall('LRANGE', activeKey, 0, -1)
|
271
|
+
if (#active > 0) then
|
272
|
+
for from, to in batches(#active, 7000) do
|
273
|
+
rcall('SADD', stalledKey, unpack(active, from, to))
|
274
|
+
end
|
275
|
+
end
|
276
|
+
return {failed, stalled}
|
277
|
+
end
|
278
|
+
return checkStalledJobs(KEYS[1], KEYS[2], KEYS[3], KEYS[4], KEYS[5], KEYS[6],
|
279
|
+
KEYS[7], KEYS[8], ARGV[1], ARGV[2], ARGV[3], ARGV[4])
|
280
|
+
`;
|
281
|
+
export const moveStalledJobsToWait = {
|
282
|
+
name: 'moveStalledJobsToWait',
|
283
|
+
content,
|
284
|
+
keys: 8,
|
285
|
+
};
|
286
|
+
//# sourceMappingURL=moveStalledJobsToWait-8.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"moveStalledJobsToWait-8.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuRf,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -0,0 +1,266 @@
|
|
1
|
+
const content = `--[[
|
2
|
+
Move next job to be processed to active, lock it and fetch its data. The job
|
3
|
+
may be delayed, in that case we need to move it to the delayed set instead.
|
4
|
+
This operation guarantees that the worker owns the job during the lock
|
5
|
+
expiration time. The worker is responsible of keeping the lock fresh
|
6
|
+
so that no other worker picks this job again.
|
7
|
+
Input:
|
8
|
+
KEYS[1] wait key
|
9
|
+
KEYS[2] active key
|
10
|
+
KEYS[3] prioritized key
|
11
|
+
KEYS[4] stream events key
|
12
|
+
KEYS[5] stalled key
|
13
|
+
-- Rate limiting
|
14
|
+
KEYS[6] rate limiter key
|
15
|
+
KEYS[7] delayed key
|
16
|
+
-- Promote delayed jobs
|
17
|
+
KEYS[8] paused key
|
18
|
+
KEYS[9] meta key
|
19
|
+
KEYS[10] pc priority counter
|
20
|
+
-- Arguments
|
21
|
+
ARGV[1] key prefix
|
22
|
+
ARGV[2] timestamp
|
23
|
+
ARGV[3] optional job ID
|
24
|
+
ARGV[4] opts
|
25
|
+
opts - token - lock token
|
26
|
+
opts - lockDuration
|
27
|
+
opts - limiter
|
28
|
+
]]
|
29
|
+
local jobId
|
30
|
+
local rcall = redis.call
|
31
|
+
-- Includes
|
32
|
+
--[[
|
33
|
+
Function to return the next delayed job timestamp.
|
34
|
+
]]
|
35
|
+
local function getNextDelayedTimestamp(delayedKey)
|
36
|
+
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
|
37
|
+
if #result then
|
38
|
+
local nextTimestamp = tonumber(result[2])
|
39
|
+
if (nextTimestamp ~= nil) then
|
40
|
+
nextTimestamp = nextTimestamp / 0x1000
|
41
|
+
end
|
42
|
+
return nextTimestamp
|
43
|
+
end
|
44
|
+
end
|
45
|
+
local function getRateLimitTTL(maxJobs, rateLimiterKey)
|
46
|
+
if maxJobs then
|
47
|
+
local pttl = rcall("PTTL", rateLimiterKey)
|
48
|
+
if pttl == 0 then
|
49
|
+
rcall("DEL", rateLimiterKey)
|
50
|
+
end
|
51
|
+
local jobCounter = tonumber(rcall("GET", rateLimiterKey) or 0)
|
52
|
+
if jobCounter >= maxJobs then
|
53
|
+
if pttl > 0 then
|
54
|
+
return pttl
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
return 0
|
59
|
+
end
|
60
|
+
--[[
|
61
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
62
|
+
(since an empty list and !EXISTS are not really the same).
|
63
|
+
]]
|
64
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
65
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
66
|
+
return waitKey, false
|
67
|
+
else
|
68
|
+
return pausedKey, true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
--[[
|
72
|
+
Function to move job from prioritized state to active.
|
73
|
+
]]
|
74
|
+
local function moveJobFromPriorityToActive(priorityKey, activeKey, priorityCounterKey)
|
75
|
+
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
|
76
|
+
if #prioritizedJob > 0 then
|
77
|
+
rcall("LPUSH", activeKey, prioritizedJob[1])
|
78
|
+
return prioritizedJob[1]
|
79
|
+
else
|
80
|
+
rcall("DEL", priorityCounterKey)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
--[[
|
84
|
+
Function to move job from wait state to active.
|
85
|
+
Input:
|
86
|
+
keys[1] wait key
|
87
|
+
keys[2] active key
|
88
|
+
keys[3] prioritized key
|
89
|
+
keys[4] stream events key
|
90
|
+
keys[5] stalled key
|
91
|
+
-- Rate limiting
|
92
|
+
keys[6] rate limiter key
|
93
|
+
keys[7] delayed key
|
94
|
+
keys[8] paused key
|
95
|
+
keys[9] meta key
|
96
|
+
keys[10] pc priority counter
|
97
|
+
opts - token - lock token
|
98
|
+
opts - lockDuration
|
99
|
+
opts - limiter
|
100
|
+
]]
|
101
|
+
-- Includes
|
102
|
+
--[[
|
103
|
+
Function to add job considering priority.
|
104
|
+
]]
|
105
|
+
-- Includes
|
106
|
+
--[[
|
107
|
+
Function priority marker to wait if needed
|
108
|
+
in order to wake up our workers and to respect priority
|
109
|
+
order as much as possible
|
110
|
+
]]
|
111
|
+
local function addPriorityMarkerIfNeeded(waitKey)
|
112
|
+
local waitLen = rcall("LLEN", waitKey)
|
113
|
+
if waitLen == 0 then
|
114
|
+
rcall("LPUSH", waitKey, "0:0")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
|
118
|
+
local prioCounter = rcall("INCR", priorityCounterKey)
|
119
|
+
local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
|
120
|
+
rcall("ZADD", prioritizedKey, score, jobId)
|
121
|
+
if not paused then
|
122
|
+
addPriorityMarkerIfNeeded(waitKey)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
--[[
|
126
|
+
Function to push back job considering priority in front of same prioritized jobs.
|
127
|
+
]]
|
128
|
+
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
|
129
|
+
-- in order to put it at front of same prioritized jobs
|
130
|
+
-- we consider prioritized counter as 0
|
131
|
+
local score = priority * 0x100000000
|
132
|
+
rcall("ZADD", prioritizedKey, score, jobId)
|
133
|
+
end
|
134
|
+
local function prepareJobForProcessing(keys, keyPrefix, targetKey, jobId, processedOn,
|
135
|
+
maxJobs, expireTime, paused, opts)
|
136
|
+
local jobKey = keyPrefix .. jobId
|
137
|
+
-- Check if we need to perform rate limiting.
|
138
|
+
if maxJobs then
|
139
|
+
local rateLimiterKey = keys[6];
|
140
|
+
-- check if we exceeded rate limit, we need to remove the job and return expireTime
|
141
|
+
if expireTime > 0 then
|
142
|
+
-- remove from active queue and add back to the wait list
|
143
|
+
rcall("LREM", keys[2], 1, jobId)
|
144
|
+
local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
|
145
|
+
if priority == 0 then
|
146
|
+
rcall("RPUSH", targetKey, jobId)
|
147
|
+
else
|
148
|
+
pushBackJobWithPriority(keys[3], priority, jobId)
|
149
|
+
end
|
150
|
+
-- Return when we can process more jobs
|
151
|
+
return {0, 0, expireTime, 0}
|
152
|
+
end
|
153
|
+
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
154
|
+
if jobCounter == 1 then
|
155
|
+
local limiterDuration = opts['limiter'] and opts['limiter']['duration']
|
156
|
+
local integerDuration = math.floor(math.abs(limiterDuration))
|
157
|
+
rcall("PEXPIRE", rateLimiterKey, integerDuration)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
local lockKey = jobKey .. ':lock'
|
161
|
+
-- get a lock
|
162
|
+
if opts['token'] ~= "0" then
|
163
|
+
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
|
164
|
+
end
|
165
|
+
rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
|
166
|
+
rcall("HSET", jobKey, "processedOn", processedOn)
|
167
|
+
rcall("HINCRBY", jobKey, "attemptsMade", 1)
|
168
|
+
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
|
169
|
+
end
|
170
|
+
--[[
|
171
|
+
Updates the delay set, by moving delayed jobs that should
|
172
|
+
be processed now to "wait".
|
173
|
+
Events:
|
174
|
+
'waiting'
|
175
|
+
]]
|
176
|
+
-- Includes
|
177
|
+
-- Try to get as much as 1000 jobs at once
|
178
|
+
local function promoteDelayedJobs(delayedKey, waitKey, targetKey, prioritizedKey,
|
179
|
+
eventStreamKey, prefix, timestamp, paused, priorityCounterKey)
|
180
|
+
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000, "LIMIT", 0, 1000)
|
181
|
+
if (#jobs > 0) then
|
182
|
+
rcall("ZREM", delayedKey, unpack(jobs))
|
183
|
+
for _, jobId in ipairs(jobs) do
|
184
|
+
local jobKey = prefix .. jobId
|
185
|
+
local priority =
|
186
|
+
tonumber(rcall("HGET", jobKey, "priority")) or 0
|
187
|
+
if priority == 0 then
|
188
|
+
-- LIFO or FIFO
|
189
|
+
rcall("LPUSH", targetKey, jobId)
|
190
|
+
else
|
191
|
+
addJobWithPriority(waitKey, prioritizedKey, priority, paused,
|
192
|
+
jobId, priorityCounterKey)
|
193
|
+
end
|
194
|
+
-- Emit waiting event
|
195
|
+
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
|
196
|
+
jobId, "prev", "delayed")
|
197
|
+
rcall("HSET", jobKey, "delay", 0)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
local target, paused = getTargetQueueList(KEYS[9], KEYS[1], KEYS[8])
|
202
|
+
-- Check if there are delayed jobs that we can move to wait.
|
203
|
+
promoteDelayedJobs(KEYS[7], KEYS[1], target, KEYS[3], KEYS[4], ARGV[1], ARGV[2], paused, KEYS[10])
|
204
|
+
local opts = cmsgpack.unpack(ARGV[4])
|
205
|
+
local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
|
206
|
+
local expireTime = getRateLimitTTL(maxJobs, KEYS[6])
|
207
|
+
if (ARGV[3] ~= "") then
|
208
|
+
jobId = ARGV[3]
|
209
|
+
-- clean stalled key
|
210
|
+
rcall("SREM", KEYS[5], jobId)
|
211
|
+
else
|
212
|
+
-- Check if we are rate limited first.
|
213
|
+
if expireTime > 0 then
|
214
|
+
return { 0, 0, expireTime, 0 }
|
215
|
+
end
|
216
|
+
-- paused queue
|
217
|
+
if paused then return {0, 0, 0, 0} end
|
218
|
+
-- no job ID, try non-blocking move from wait to active
|
219
|
+
jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
|
220
|
+
end
|
221
|
+
-- If jobId is special ID 0:delay, then there is no job to process
|
222
|
+
if jobId then
|
223
|
+
if string.sub(jobId, 1, 2) == "0:" then
|
224
|
+
rcall("LREM", KEYS[2], 1, jobId)
|
225
|
+
if expireTime > 0 then
|
226
|
+
return { 0, 0, expireTime, 0 }
|
227
|
+
end
|
228
|
+
-- paused queue
|
229
|
+
if paused then return {0, 0, 0, 0} end
|
230
|
+
-- Move again since we just got the marker job.
|
231
|
+
jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
|
232
|
+
-- Since it is possible that between a call to BRPOPLPUSH and moveToActive
|
233
|
+
-- another script puts a new maker in wait, we need to check again.
|
234
|
+
if jobId and string.sub(jobId, 1, 2) == "0:" then
|
235
|
+
rcall("LREM", KEYS[2], 1, jobId)
|
236
|
+
jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
|
237
|
+
end
|
238
|
+
end
|
239
|
+
if jobId then
|
240
|
+
-- this script is not really moving, it is preparing the job for processing
|
241
|
+
return prepareJobForProcessing(KEYS, ARGV[1], target, jobId, ARGV[2], maxJobs, expireTime, paused, opts)
|
242
|
+
else
|
243
|
+
jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
|
244
|
+
if jobId then
|
245
|
+
return prepareJobForProcessing(KEYS, ARGV[1], target, jobId, ARGV[2], maxJobs, expireTime, paused, opts)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
else
|
249
|
+
jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
|
250
|
+
if jobId then
|
251
|
+
return prepareJobForProcessing(KEYS, ARGV[1], target, jobId, ARGV[2], maxJobs, expireTime, paused, opts)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
-- Return the timestamp for the next delayed job if any.
|
255
|
+
local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
|
256
|
+
if (nextTimestamp ~= nil) then
|
257
|
+
return { 0, 0, 0, nextTimestamp }
|
258
|
+
end
|
259
|
+
return { 0, 0, 0, 0}
|
260
|
+
`;
|
261
|
+
export const moveToActive = {
|
262
|
+
name: 'moveToActive',
|
263
|
+
content,
|
264
|
+
keys: 10,
|
265
|
+
};
|
266
|
+
//# sourceMappingURL=moveToActive-10.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"moveToActive-10.js","sourceRoot":"","sources":["../../../src/scripts/moveToActive-10.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmQf,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
|