Skip to content

Latest commit

 

History

History
1370 lines (722 loc) · 46.7 KB

CHANGELOG.md

File metadata and controls

1370 lines (722 loc) · 46.7 KB

4.16.4 (2024-11-01)

Bug Fixes

  • 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)

Bug Fixes

  • metrics: differentiate points in different minutes to be more accurate (#2770) (fbf2fa3)

4.16.2 (2024-09-05)

Performance Improvements

  • metrics: save zeros as much as max data points (#2767) (3a09840)

4.16.1 (2024-08-28)

Bug Fixes

4.16.0 (2024-07-30)

Features

4.15.1 (2024-07-04)

Bug Fixes

  • job: check jobKey when saving stacktrace (#2755) (96675f5)

4.15.0 (2024-06-30)

Features

4.14.0 (2024-06-25)

Features

  • queue: add global:duplicated event when a duplicated is added (#2749) (d632ac1)

4.13.1 (2024-06-21)

Bug Fixes

  • priority: consider paused state when calling getCountsPerPriority (#2748) (6c2719a)

4.13.0 (2024-06-12)

Features

4.12.9 (2024-05-24)

Bug Fixes

  • retry-job: throw error when job is not in active state (#2741) (c29e3b0)

4.12.8 (2024-05-22)

Bug Fixes

  • move-to-finished: throw error when job is not in active state (#2739) (7b12be1)

4.12.7 (2024-05-21)

Bug Fixes

  • scripts: throw error when moving non-active job to delayed (#2740) (63636b1)

4.12.6 (2024-05-18)

Bug Fixes

  • stalled: take in count removeOnFail option (#2734) (2112269)

4.12.5 (2024-05-17)

Bug Fixes

  • job: validate job existence when adding log (#2738) (1fb1562)

4.12.4 (2024-05-15)

Bug Fixes

4.12.3 (2024-05-10)

Bug Fixes

  • job: validate jobKey in updateProgress and update (#2730) (6d84156)

Performance Improvements

  • scripts: remove token after moving to wait or delayed (#2731) (7ee8f74)

4.12.2 (2024-01-17)

Bug Fixes

  • dependencies: upgrade msgpackr (cc83ae2)

4.12.1 (2024-01-15)

Bug Fixes

  • deps: bump msgpackr from 1.5.2 to 1.10.1 (#2697) (b27c90d)

4.12.0 (2023-12-18)

Features

  • add missing extendLock definition (14432ff)

4.11.5 (2023-11-11)

Bug Fixes

  • pass redis string as opts into queue (e94f568)

4.11.4 (2023-10-14)

Bug Fixes

  • catch pause errors when closing (ccb6cc7)

4.11.3 (2023-08-11)

Bug Fixes

  • types: make repeat option key optional (934ec98)

4.11.2 (2023-08-08)

Bug Fixes

  • worker: better client name support (5910f44)

4.11.1 (2023-08-08)

Bug Fixes

4.11.0 (2023-08-08)

Bug Fixes

  • 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)

Features

  • upgrade ioredis to 5.3.2 (e1883f0)

4.10.4 (2023-02-09)

Bug Fixes

  • retry: handle pause queue status (9f945d6)

4.10.3 (2023-02-03)

Bug Fixes

4.10.2 (2022-11-24)

Bug Fixes

  • queue: throw error when needed instead of hiding it in a closure (8a742c1)

4.10.1 (2022-10-13)

Bug Fixes

  • support for instantiation using redisUrl (6288f7d)

4.10.0 (2022-09-29)

Features

  • types: add typescript types to package (e793f8d)

4.9.0 (2022-09-05)

Features

4.8.5 (2022-07-27)

Performance Improvements

  • clean: use ZRANGEBYSCORE to improve performance (#2363) (3331188)

4.8.4 (2022-06-16)

Bug Fixes

  • worker: better disconnect when blocking connection (b9ea7f4)

4.8.3 (2022-05-12)

Bug Fixes

  • stalled-jobs: move stalled jobs to wait in batches (2f1fb6c)

4.8.2 (2022-04-21)

Bug Fixes

4.8.1 (2022-03-21)

Performance Improvements

4.8.0 (2022-03-19)

Features

  • have Queue#clean consult job.{finishedOn,processedOn,timestamp} (#2309) (b7058e6)

4.7.0 (2022-03-02)

Features

  • metrics: add support for collecting queue metrics (886d764)

4.6.2 (2022-02-23)

Bug Fixes

  • better handling of maxRetriesPerRequest (d3b9138)

4.6.1 (2022-02-21)

Bug Fixes

  • sandbox: better error reporting broken processor file (10db479)

4.6.0 (2022-02-21)

Features

  • handle redis uri queries (54e5463)

4.5.6 (2022-02-20)

Bug Fixes

  • sandbox: wait for result of sending start command (232ed85)

4.5.5 (2022-02-16)

Bug Fixes

  • worker: better closing when disconnected (41b9404)

4.5.4 (2022-02-14)

Bug Fixes

  • queue: return correct workers with getWorkers() (193644c)

4.5.3 (2022-02-14)

Bug Fixes

  • commands: do not wait for redis to load commands (ad7b647)

4.5.2 (2022-02-14)

Bug Fixes

  • scripts: make it easier for tools like vercel to find the .lua scripts (8ab5b1d)

4.5.1 (2022-02-06)

Bug Fixes

  • sandbox: broken processor files should fail jobs (dd0b853)

4.5.0 (2022-02-01)

Features

  • queue: add retryJobs for failed status (501b2cc)

4.4.0 (2022-01-26)

Features

  • add support for removeOn based on time (90f040c)

4.3.0 (2022-01-26)

Features

  • upgrade cron version enabling new cron expressions (79337a3)

4.2.1 (2022-01-17)

Bug Fixes

  • sandbox: exit if uncaughtException (43dc2e6)

4.2.0 (2021-12-21)

Features

  • queue: enabled queues to share childPool instance (#2237) (16fdbe9)

4.1.4 (2021-12-14)

Bug Fixes

  • queue: check redisOptions is available fixes #2186 (071c51d)

4.1.3 (2021-12-14)

Bug Fixes

4.1.2 (2021-12-14)

Performance Improvements

  • speed up performance of queue.clean when called with a limit (#2205) (c20e469)

4.1.1 (2021-11-16)

Bug Fixes

4.1.0 (2021-10-31)

Features

  • emit event on job lock extend failure (7247b3b)

4.0.0 (2021-10-27)

Bug Fixes

  • force options to guarantee correct reconnects (3ade8e6)

BREAKING CHANGES

  • If redis opts are missing: { maxRetriesPerRequest: null, enableReadyCheck: false } then a exception will be thrown.

3.29.3 (2021-10-13)

Bug Fixes

  • name-processors: wait for all processors when closing fixes #1618 (79ce013)

3.29.2 (2021-09-08)

Bug Fixes

  • connection: fail only if redis connection does not recover (0ca4c6b)

3.29.1 (2021-08-26)

Bug Fixes

3.29.0 (2021-08-20)

Features

  • jobs: add extendLock method (30d5959)

3.28.1 (2021-08-06)

Bug Fixes

  • queue: changed user prop to username for redisOptions (71baea9)

3.28.0 (2021-08-05)

Features

  • queue: handle redis url containing username (a245fc4)

3.27.0 (2021-07-27)

Features

  • support job.discard function in sandboxed processors (5adcf2c)

3.26.0 (2021-07-16)

Features

  • repeatable: store key in repeat options (dab0d82)

3.25.2 (2021-07-16)

Bug Fixes

3.25.1 (2021-07-16)

Bug Fixes

  • error when .lua scripts missing in built bundle (85307c3)

3.25.0 (2021-07-15)

Features

  • pass clientName to createClient function (2a29569)

3.24.0 (2021-07-15)

Features

  • backoff: add option to specify options for custom backoff strategy (e573010)

3.23.3 (2021-07-15)

Bug Fixes

3.23.2 (2021-07-15)

Bug Fixes

3.23.1 (2021-07-15)

Bug Fixes

  • wait in queue to be ready in getNextJob fixes #1852 (4e224e5)

3.23.0 (2021-07-13)

Features

3.22.12 (2021-07-13)

Bug Fixes

3.22.11 (2021-07-08)

Bug Fixes

  • close: clear timers after waiting jobs fixes #1415 (77b319d)

3.22.10 (2021-07-01)

Bug Fixes

3.22.9 (2021-06-22)

Bug Fixes

  • reprocess: do not store job.id in added list (3fbc506)

3.22.8 (2021-06-09)

Bug Fixes

3.22.7 (2021-05-31)

Bug Fixes

3.22.6 (2021-05-17)

Bug Fixes

3.22.5 (2021-05-11)

Bug Fixes

  • emit failed event when stalled job fails (f68da41)

3.22.4 (2021-04-27)

Bug Fixes

  • also populate retriedOn when loading from id with excludeData (0964b39)

3.22.3 (2021-04-23)

Bug Fixes

  • delayed: re-schedule updateDelay in case of error fixes #2015 (16bbfad)

3.22.2 (2021-04-23)

Bug Fixes

v.3.22.1

  • fix(obliterate): remove repeatable jobs fixes #2012

Changes

v.3.22.0

  • feat: do not rely on comma to encode jobid in progress fixes #2003

Changes

v.3.21.1

  • 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.

Changes

v.3.21.0

  • feat: add a method to "obliterate" a queue
  • fix: upgrade lodash fixes #1996

Changes

v.3.20.1

  • 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

Changes

v.3.20.0

  • feat(job): implement Job#retriedOn (#1868)
  • fix: job default opts fixes #1904

Changes

v.3.19.1

  • fix(getters): properly zip hmget result

Changes

v.3.19.0

  • feat: add option to exclude data on getters (#1910)
  • fix: lock ioredis to 4.18.0 to avoid breakage with newer 4.19.0+.

Changes

v.3.18.1

  • fix(repeat): remove last delayed job.
  • fix(rate-limiter): increment jobCounter only when a job is processed. fixes #1875.
  • fix(sandbox): clear dangling timeout.

Changes

v.3.18.0

  • feat: make pause forward compatible with bullmq (#1818) (@manast)

Changes

v.3.17.0

  • feat: better rate limiter (#1816) (@manast)
  • feat(sandbox): kill child workers gracefully (#1802) (@GabrielCastro)

Changes

v.3.16.0

  • feat(rate-limiter): add grouping support.

Changes

v.3.15.0

  • feat: add isPaused fixes #1274
  • fix: emit waiting event when adding a priority job (#1134)

Changes

v.3.14.0

  • 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)

Changes

v.3.13.0

  • feat: add "preventParsingData" job option to prevent data parsing
  • fix: queue.clean clean job logs as well
  • fix: whenCurrentJobsFinished should wait for all jobs

Changes

v.3.12.1

  • fix: catch errors parsing invalid progress data
  • fix(pause): don't initialize bclient if not waiting for jobs to finish

Changes

v.3.12.0

  • feat: support async custom backoffs.

  • feat(sandbox): emulate job.progress function.

  • fix: queue.pause(true, true) doesn't pause queue.

Changes

v.3.11.0

  • 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.

Changes

v.3.10.0

  • 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

Changes

v.3.9.1

  • fix: add log to job wrapper

Changes

v.3.9.0

  • feat: add job.log #1165

Changes

v.3.8.1

  • fix: wait for ready in cleanJobsInSet fixes #1298

Changes

v.3.8.0

  • 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

Changes

v.3.7.0

  • 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.

Changes

v.3.6.0

  • 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.

Changes

v.3.5.3

  • 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.

Changes

v.3.5.2

  • chore(queue): remove bluebird config from the codebase.

Changes

v.3.5.1

  • chore(yarn): updated yarn.lock

Changes

v.3.5.0

  • 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

Changes

v.3.4.8

  • emit waiting event when waking up sleep jobs fixing #792
  • throw error if missing processor file fixing #954

Changes

v.3.4.7

  • Fixes to deal with removing correctly in priority queues #984

Changes

v.3.4.6

  • Reverted use of arrow function that was incompatible with older versions of node.

Changes

v.3.4.5

  • Fixed Unhandled promise rejections #1012.

Changes

v.3.4.4

  • 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.

Changes

v.3.4.3

  • 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.

Changes

v.3.4.2

  • 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.

Changes

v.3.4.1

  • Better check for closing in moveUnlockedJobsToWait, possibly fixing #806.

Changes

v.3.4.0

  • 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.

Changes

v.3.3.10

  • Faster next job fetch #868
  • Added global default options for jobs. Fixes #706.
  • Added a limit for repeatable jobs. #854.

Changes

v.3.3.9

  • Support custom backoff strategies.
  • Fixed #786. Handling of ES6 default export.
  • Fixed #782. Better handling of "isReady".

Changes

v.3.3.8

  • 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.

Changes

v.3.3.7

  • Fixed #807.
  • Adding ability to limit by stacktrace. #798.

Changes

v.3.3.6

  • Fixed #766, #781, #716.
  • Correctly accept DB in redis connection string.
  • Fixed global progress event.

Changes

v.3.3.5

  • Fixed #764, #762, #759.

Changes

v.3.3.4

  • Fixed #748.

Changes

v.3.3.3

  • Re-fixed #739.
  • Possibly fixed for #747.
  • Fixed removeRepeatable (missing file)

Changes

v.3.3.2

  • 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.

Changes

v.3.3.1

  • Fixed #714

Changes

v.3.3.0

  • Added a method Queue##removeRepeatable to remove repeatable jobs.
  • Now also emits drained as a global event.
  • Fixed #518, #624

Changes

v.3.2.0

  • Added support for running jobs in child processes #488

Changes

v.3.1.0

  • Added rate limiter support.
  • Added method to update jobs data.
  • Implemented stalled as global event.

Changes

v.3.0.0

  • No changes.

v.3.0.0-rc.10

  • Fixed #666.
  • Small improvements in the repeat code.

Changes

v.3.0.0-rc.9

  • Fixed #672.
  • Fixed #670

Changes

v.3.0.0-rc.8

  • Enhanced job fetching #651 (faster and more reliable).

Changes

v.3.0.0-rc.7

  • Fixed #659

Changes

v.3.0.0-rc.6

  • Fixed #645.

Changes

v.3.0.0-rc.5

  • 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.

Changes

v.3.0.0-rc.4

  • 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.

Changes

v.3.0.0-rc.3

  • Fixed #579.
  • Lazy subscription to events for better performance.
  • Corrected calculation of next repeat job. #563.

Changes

v.3.0.0-rc.2

  • Improved performance of moveToActive #550.
  • Fixed issue with cancelable promise #546.

Changes

v.3.0.0-rc.1

  • Improved error and lock handling for failed jobs #499, #539.
  • Corrected instantiation from urls #538.
  • Return jobs in proper order in jobs getters.

Changes

v.3.0.0-alpha.4

  • Implemented repeatable jobs. #252.

Changes

v.3.0.0-alpha.3

  • Simplified global events #501.

Changes

v.3.0.0-alpha.2

  • Eliminated possible memory leak #503

Changes

v.3.0.0-alpha.1

  • 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.

Changes

v.2.2.6

  • Persisted failedReason when storing job data.
  • added queue##isReady()

Changes

v.2.2.5

  • Fixed so that redis key prefix works properly.

Changes

v.2.2.4

  • Allow reusing certain redis connections.

Changes

v.2.2.3

  • Added getJobCounts.
  • Fixed global events #394.

Changes

v.2.2.2

  • Fixed redis script cache gets bloated after update to bull 2.0 #426

Changes

v.2.2.1

  • Re-added createClient option that was removed by mistake.
  • Corrected getJobCountByTypes, fixes #419 and #401

Changes

v.2.2.0

  • 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

Changes

v.2.1.2

  • Fixed Error renewing lock LockError: Exceeded 0 attempts to lock the resource #437
  • Fixed Unable to renew nonexisting lock on job fail #441

Changes

v.2.1.1

  • Catch errors produced in timers. Related to #441

Changes

v.2.1.0

  • 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

Changes

v.2.0.0

  • Changed redis module to ioredis fixing many issues along the way, see changes.

Changes

v.1.1.3

  • fixed "Broken constructor pattern from recent commit" #384
  • fixed "Queue.prototype.getWaiting() returns empty list if Queue is paused" #342

Changes

v1.1.2

  • regained backwards compatibility in events by using disturbed 1.0.6

Changes

v1.1.1

Changes

v1.1.0

Changes

v1.0.0

  • improvements in clean (fixes and performance).

Changes

v1.0.0-rc4

  • fixed lock renew logic.
  • atomized code for getting stalled jobs.

Changes

v1.0.0-rc3

  • smaller fixes.

Changes

v1.0.0-rc2

  • 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.

Changes

v1.0.0-rc1

  • 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

Changes

v0.7.2

  • Added local pause/resume functionality
  • fixed memory leaks present in the run promise chain.
  • fixed "Illegal access to a strict mode caller function".

Changes

v0.7.1

  • fixed storing of stacktraces

Changes

v0.7.0

  • store the return value from the job handlers.
  • store stacktraces.
  • improvements in delayed jobs.

Changes

v0.4.0

  • added a Queue##clean method

Changes

v0.3.0

  • 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.

Changes

v0.2.7

Changes

v0.2.6

  • [Fix] #103 When a queue start it do not process delayed job. Changes

v0.2.5

  • [upgrade] Upgraded node redis to version 0.12.x
  • [improvement] eslinted all code.
  • [fix] added missing token when calling takeLock on jobs.

Changes

v0.2.4

Changes

v0.2.3

Changes

v0.1.9

  • [Improvement] Faster job removal. (manast)

v0.1.8

  • [Improvement] Better promisification of redis methods. (manast)

v0.1.7

  • [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)

v0.1.6

  • [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.