4.16.4 (2024-11-01)
- deps: bump msgpackr to 1.1.2 to resolve ERR_BUFFER_OUT_OF_BOUNDS error (#2783) fixes #2782 (bc0ae0a)
4.16.3 (2024-09-10)
4.16.2 (2024-09-05)
4.16.1 (2024-08-28)
4.16.0 (2024-07-30)
4.15.1 (2024-07-04)
4.15.0 (2024-06-30)
4.14.0 (2024-06-25)
4.13.1 (2024-06-21)
4.13.0 (2024-06-12)
4.12.9 (2024-05-24)
4.12.8 (2024-05-22)
4.12.7 (2024-05-21)
4.12.6 (2024-05-18)
4.12.5 (2024-05-17)
4.12.4 (2024-05-15)
4.12.3 (2024-05-10)
4.12.2 (2024-01-17)
- dependencies: upgrade msgpackr (cc83ae2)
4.12.1 (2024-01-15)
4.12.0 (2023-12-18)
- add missing extendLock definition (14432ff)
4.11.5 (2023-11-11)
- pass redis string as opts into queue (e94f568)
4.11.4 (2023-10-14)
- catch pause errors when closing (ccb6cc7)
4.11.3 (2023-08-11)
- types: make repeat option key optional (934ec98)
4.11.2 (2023-08-08)
- worker: better client name support (5910f44)
4.11.1 (2023-08-08)
4.11.0 (2023-08-08)
- add mising getMetrics type (#2640) (a217a7d)
- remove deprecated debuglog (4ce36fe)
- types: add missing keys to repeat opts (e4e6457)
- types: rename strategyOptions to options to reflect js file (bae6427)
- typings: return type of getJobCountByTypes (#2622) (47722ed)
- worker: high-memory-usage-when-providing-float-to-concurrency (#2620) (dcca1e8)
- change option name to match ts declaration (909a07e)
- ts declaration metrics option and getMetrics function (11331b7)
- upgrade ioredis to 5.3.2 (e1883f0)
4.10.4 (2023-02-09)
- retry: handle pause queue status (9f945d6)
4.10.3 (2023-02-03)
4.10.2 (2022-11-24)
- queue: throw error when needed instead of hiding it in a closure (8a742c1)
4.10.1 (2022-10-13)
- support for instantiation using redisUrl (6288f7d)
4.10.0 (2022-09-29)
- types: add typescript types to package (e793f8d)
4.9.0 (2022-09-05)
- support .cjs files (75e6775)
4.8.5 (2022-07-27)
4.8.4 (2022-06-16)
- worker: better disconnect when blocking connection (b9ea7f4)
4.8.3 (2022-05-12)
- stalled-jobs: move stalled jobs to wait in batches (2f1fb6c)
4.8.2 (2022-04-21)
4.8.1 (2022-03-21)
4.8.0 (2022-03-19)
4.7.0 (2022-03-02)
- metrics: add support for collecting queue metrics (886d764)
4.6.2 (2022-02-23)
- better handling of maxRetriesPerRequest (d3b9138)
4.6.1 (2022-02-21)
- sandbox: better error reporting broken processor file (10db479)
4.6.0 (2022-02-21)
- handle redis uri queries (54e5463)
4.5.6 (2022-02-20)
- sandbox: wait for result of sending start command (232ed85)
4.5.5 (2022-02-16)
- worker: better closing when disconnected (41b9404)
4.5.4 (2022-02-14)
- queue: return correct workers with getWorkers() (193644c)
4.5.3 (2022-02-14)
- commands: do not wait for redis to load commands (ad7b647)
4.5.2 (2022-02-14)
- scripts: make it easier for tools like vercel to find the .lua scripts (8ab5b1d)
4.5.1 (2022-02-06)
- sandbox: broken processor files should fail jobs (dd0b853)
4.5.0 (2022-02-01)
- queue: add retryJobs for failed status (501b2cc)
4.4.0 (2022-01-26)
- add support for removeOn based on time (90f040c)
4.3.0 (2022-01-26)
- upgrade cron version enabling new cron expressions (79337a3)
4.2.1 (2022-01-17)
- sandbox: exit if uncaughtException (43dc2e6)
4.2.0 (2021-12-21)
4.1.4 (2021-12-14)
4.1.3 (2021-12-14)
4.1.2 (2021-12-14)
4.1.1 (2021-11-16)
4.1.0 (2021-10-31)
- emit event on job lock extend failure (7247b3b)
4.0.0 (2021-10-27)
- force options to guarantee correct reconnects (3ade8e6)
- If redis opts are missing: { maxRetriesPerRequest: null, enableReadyCheck: false } then a exception will be thrown.
3.29.3 (2021-10-13)
3.29.2 (2021-09-08)
- connection: fail only if redis connection does not recover (0ca4c6b)
3.29.1 (2021-08-26)
3.29.0 (2021-08-20)
- jobs: add extendLock method (30d5959)
3.28.1 (2021-08-06)
- queue: changed user prop to username for redisOptions (71baea9)
3.28.0 (2021-08-05)
- queue: handle redis url containing username (a245fc4)
3.27.0 (2021-07-27)
- support job.discard function in sandboxed processors (5adcf2c)
3.26.0 (2021-07-16)
- repeatable: store key in repeat options (dab0d82)
3.25.2 (2021-07-16)
3.25.1 (2021-07-16)
- error when .lua scripts missing in built bundle (85307c3)
3.25.0 (2021-07-15)
- pass clientName to createClient function (2a29569)
3.24.0 (2021-07-15)
- backoff: add option to specify options for custom backoff strategy (e573010)
3.23.3 (2021-07-15)
3.23.2 (2021-07-15)
3.23.1 (2021-07-15)
3.23.0 (2021-07-13)
3.22.12 (2021-07-13)
3.22.11 (2021-07-08)
3.22.10 (2021-07-01)
3.22.9 (2021-06-22)
- reprocess: do not store job.id in added list (3fbc506)
3.22.8 (2021-06-09)
3.22.7 (2021-05-31)
3.22.6 (2021-05-17)
3.22.5 (2021-05-11)
- emit failed event when stalled job fails (f68da41)
3.22.4 (2021-04-27)
- also populate retriedOn when loading from id with excludeData (0964b39)
3.22.3 (2021-04-23)
3.22.2 (2021-04-23)
- fix(obliterate): remove repeatable jobs fixes #2012
- feat: do not rely on comma to encode jobid in progress fixes #2003
- fix: safer implementation of obliterate. Note: If you want to use the new method "obliterate" it is highly recommended that you upgrade to this version, since previous version is not safe to use if using the colon ':' character in your queue names.
- feat: add a method to "obliterate" a queue
- fix: upgrade lodash fixes #1996
- fix(queue): possible infinite loop when disconnect fixes #1746
- fix(clean-priority): remove job from priority set on clean (#1405)
- fix(sandbox): job update (#1957)
- fix: use async version of process.send for progress and log (#1948)
- fix: promote jobs to the right "list" when paused
- feat(job): implement Job#retriedOn (#1868)
- fix: job default opts fixes #1904
- fix(getters): properly zip hmget result
- feat: add option to exclude data on getters (#1910)
- fix: lock ioredis to 4.18.0 to avoid breakage with newer 4.19.0+.
- fix(repeat): remove last delayed job.
- fix(rate-limiter): increment jobCounter only when a job is processed. fixes #1875.
- fix(sandbox): clear dangling timeout.
- feat: make pause forward compatible with bullmq (#1818) (@manast)
- feat: better rate limiter (#1816) (@manast)
- feat(sandbox): kill child workers gracefully (#1802) (@GabrielCastro)
- feat(rate-limiter): add grouping support.
- feat: add isPaused fixes #1274
- fix: emit waiting event when adding a priority job (#1134)
- feat(queue): add removeJobs function
- fix: clamp negative job delay values to 0 to prevent thrashing
- fix: use DEFAULT_JOB_NAME (#1585)
- fix: remove the lazy client error handler on close (#1605)
- fix: prevent exceeding the maximum stack call size when emptying large queues (#1660)
- feat: add "preventParsingData" job option to prevent data parsing
- fix: queue.clean clean job logs as well
- fix: whenCurrentJobsFinished should wait for all jobs
- fix: catch errors parsing invalid progress data
- fix(pause): don't initialize bclient if not waiting for jobs to finish
-
feat: support async custom backoffs.
-
feat(sandbox): emulate job.progress function.
-
fix: queue.pause(true, true) doesn't pause queue.
-
feat(queue): basic support for bulk adding jobs.
-
feat(job): save data on job instance when updated.
-
fix(queue): whenCurrentJobsFinished shouldn't initialize bclient. Fixes #1346.
-
fix(queue): unhandled promise warning in updateDelayTimer.
-
fix(sandbox): if the child process is killed, remove it from the pool.
- fix: remove logs automtically when using autoremove fixes #1330
- feat: add support for keeping a specified number of jobs when using auto-remove.
- feat: add support for node 12
- fix: fix check for supported file types in sandboxed processors #1311
- ci: drop support for node 6
- fix: add log to job wrapper
- feat: add job.log #1165
- fix: wait for ready in cleanJobsInSet fixes #1298
- fix: improve delay logic fixing #1226, #1222
- feat: store finishedOn on the job instance
- fix: return every in getRepeatableJobs #1284
- fix: remove broken child processes #1098
- feat: update sandbox exit handler to log signals #1252
- fix: Ignore unknown command client error #1240
- perf: improve update delay set logic.
- feat: consider priority when promoting a job #1205.
- fix: better delay for rate limited jobs.
- feat: update port selection mechanism for child node process inspect flag.
- feat: add function to remove repeatable jobs by key.
- fix: properly remove sandbox events. Fixes #1179.
- fix: make progress functions in sandbox consistently return a promise.
- chore: upgrade ioredis to ^4.5.1.
- fix: fix #1044 support for typescript processors.
- chore: remove bluebird.
- chore: use lockKey method instead of private property.
- fix(queue): convert delay setting to number.
- chore(queue): remove bluebird config from the codebase.
- chore(yarn): updated yarn.lock
- fix(delayed): pause delayed jobs #1087
- fix(lua): correct numJobs fetch in moveToActive
- perf(moveToActive): used local var for rate limiter
- perf(queue): replace bluebird by native promises where possible
- chore(queue): fix typo in forcedReconnection variable
- feat(child-processes): catch sub process crashes
- fix(jobs): reset 'failedReason', 'finishedOn' and 'processedOn' fields on job retry
- fix(queue): fix Warning: cancellation is disabled
- fix(queue): remove the correct listener in isRedisReady
- feat(jobs): allow cancelling of retries when using custom backoff strategy
- feat(rate-limiter): add discard config for rate-limiter
- feat(jobs): make job progress accepts variant types
- fix(repeatable): Fixed wrong repeatable count updates
- fix(jobs): fix copy paste mistake for stacktrace in job toData
- feat(child-processes): Propagate stack traces
- feat(repeatable): add ability for cron repeatable job with startDate
- emit waiting event when waking up sleep jobs fixing #792
- throw error if missing processor file fixing #954
- Fixes to deal with removing correctly in priority queues #984
- Reverted use of arrow function that was incompatible with older versions of node.
- Fixed Unhandled promise rejections #1012.
- Partially fixed #845. When call queue.close() bull throws Error: Connection is closed.
- Fixed #998. Check for existence of rate limiter options.
- Fixed #1003. Fixed fixed repeatable jobs duplication using every.
- Feature/provide error to custom backoff strategy.
- Fixed #994 queue.getJobs() race condition.
- Fixed #966 Race conditions reviving repeatable jobs.
- Fixed getters: Update types array to include paused.
- Fixed #958 job.finished slowdown.
- Fixed #949 TypeError: job.queue.client.isFinished is not a function.
- Fixed #870 TypeError when retrying jobs.
- Fixed #942 Support for milliseconds intervals in repeatable jobs.
- Fixed #903 Globally paused queue cannot receive job (or not shown in Arena untill queue is globally resumed).
- Workaround for #911 Seperate process worker fails to launch when Node is started with --inspect flag
- added missing retain on reused child job #908.
- added more tests for child jobs.
- Better check for closing in moveUnlockedJobsToWait, possibly fixing #806.
- Added support for prioritized delayed jobs.
- Added ability to process all named jobs from one process function.
- Fixed #893, warning 'a promise was rejected with a non-error' for external queues in case of an error.
- Faster next job fetch #868
- Added global default options for jobs. Fixes #706.
- Added a limit for repeatable jobs. #854.
- Support custom backoff strategies.
- Fixed #786. Handling of ES6 default export.
- Fixed #782. Better handling of "isReady".
- Fixed #812. External process doesn't terminate on
queue.close()
. - Fixed #830. Named Process Sent to Wrong Processor.
- Fixed #572. Do not close external connections.
- Fixed #807.
- Adding ability to limit by stacktrace. #798.
- Fixed #766, #781, #716.
- Correctly accept DB in redis connection string.
- Fixed global progress event.
- Fixed #764, #762, #759.
- Fixed #748.
- Re-fixed #739.
- Possibly fixed for #747.
- Fixed removeRepeatable (missing file)
- Fixed #721. SyntaxError: Unexpected token u in JSON at position 0.
- Fixed #739. childs are not added to the retained set.
- Fixed #734. fixed Promise warnings.
- Fixed #714
- Added a method
Queue##removeRepeatable
to remove repeatable jobs. - Now also emits drained as a global event.
- Fixed #518, #624
- Added support for running jobs in child processes #488
- Added rate limiter support.
- Added method to update jobs data.
- Implemented stalled as global event.
- No changes.
- Fixed #666.
- Small improvements in the repeat code.
- Fixed #672.
- Fixed #670
- Enhanced job fetching #651 (faster and more reliable).
- Fixed #659
- Fixed #645.
- Improved performance, specially when having many concurrent workers.
- Fixed #609 using zsets for storing repeatable jobs.
- Fixed #608 Event chaining no longer works.
- Improved getters.
- Fixed #601 Add multiple repeatable jobs with the same cron pattern.
- Added support for naming workers in redis connections #530.
- Lazy instantiation of redis clients. Fixes #526.
- job.finished captures result from queue process. #588.
- Caches LUA scripts to avoid reading files in every queue instantiation. #591.
- Emit 'drain' event when queue is empty. #596.
- store finished and processed timestamps. #594, #606.
- Fixed #579.
- Lazy subscription to events for better performance.
- Corrected calculation of next repeat job. #563.
- Improved performance of moveToActive #550.
- Fixed issue with cancelable promise #546.
- Improved error and lock handling for failed jobs #499, #539.
- Corrected instantiation from urls #538.
- Return jobs in proper order in jobs getters.
- Implemented repeatable jobs. #252.
- Simplified global events #501.
- Eliminated possible memory leak #503
- improved job fetch mechanism. #480.
- job.jobId changed to job.id.
- refactored error messages into separate error module.
- refactored lua scripts into separate files, and preloaded.
- many atomizations and clean ups.
- completed and failed job states are now represented in ZSETs. #190.
- Persisted failedReason when storing job data.
- added queue##isReady()
- Fixed so that redis key prefix works properly.
- Allow reusing certain redis connections.
- Added getJobCounts.
- Fixed global events #394.
- Fixed redis script cache gets bloated after update to bull 2.0 #426
- Re-added createClient option that was removed by mistake.
- Corrected getJobCountByTypes, fixes #419 and #401
- Much improved priority queues, simpler, faster and more reliable.
- Fixed issue where lua scripts where leaking memory.
- Improvements in local pause, fixing #446 and #447.
- Fix to increase delay time over 24 days #244
- Fixed Error renewing lock LockError: Exceeded 0 attempts to lock the resource #437
- Fixed Unable to renew nonexisting lock on job fail #441
- Catch errors produced in timers. Related to #441
- Fixed #397, Error: Unable to renew nonexisting lock
- Fixed #402, Job.prototype.finished contains error in promise
- Fixed #371, "Unexpected token u in JSON at position 0" while processing job
- New feature #363, "method to permanently fail a job"
- Fix job.progress() to return the correct progress
- Changed redis module to ioredis fixing many issues along the way, see changes.
- fixed "Broken constructor pattern from recent commit" #384
- fixed "Queue.prototype.getWaiting() returns empty list if Queue is paused" #342
- regained backwards compatibility in events by using disturbed 1.0.6
- Returned this in queue##on and queue##once for backwards compatibility.
- Fixes PriorityQueue Events and Local Worker Pause/Resume
- Fixed job corruption issue
- The job id can be overridden to implement job throttling behavior
- Added
removeOnComplete
job option - More robust job retry
- Events are now broadcast to all workers
- improvements in clean (fixes and performance).
- fixed lock renew logic.
- atomized code for getting stalled jobs.
- smaller fixes.
- Improved locking when removing and processing stalled jobs.
- Fixed #302 EVALSHA failure.
- Fixed #295 error with redis 3.2.
- Correctly allows the specification of the db
- Honor start/end range for complete/failed jobs.
- Fixed #277 Memory Leaks With Large Queue.
- Support for custom key prefix for redis keys.
- Removed all potential dangerous hazards by atomizing many operations using cached LUA scripts.
- Improved performance around 400% compared to previous version.
- Better pause/resume (#266), and added pause for local workers.
- Fixed #272, #271, #261, #253, #240, #239
- Added local pause/resume functionality
- fixed memory leaks present in the run promise chain.
- fixed "Illegal access to a strict mode caller function".
- fixed storing of stacktraces
- store the return value from the job handlers.
- store stacktraces.
- improvements in delayed jobs.
- added a Queue##clean method
- added support for custom clients.
- added test support for node 0.12.
- timeout improvements.
- unit test improvements.
- added timeout to queue pop blocking call.
- removed when dependency.
- [Fix] #103 When a queue start it do not process delayed job. Changes
- [upgrade] Upgraded node redis to version 0.12.x
- [improvement] eslinted all code.
- [fix] added missing token when calling takeLock on jobs.
- [Improvement] Faster job removal. (manast)
- [Improvement] Better promisification of redis methods. (manast)
- [Feature] Added a convenience method for getting a job. (loginx)
- [Fix] Only set a redis db from options if defined. (jboga)
- [Fix] Fixed issue #52. (manast)
- [Fix] Improved and corrected job's getters.
- [Fix] Automatically restart queues in the event of redis disconnections.
- [Feature] Added support for adding jobs in a LIFO fashion.