Skip to content

Latest commit

 

History

History
975 lines (610 loc) · 36.7 KB

CHANGELOG.md

File metadata and controls

975 lines (610 loc) · 36.7 KB

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

6.3.0 (2022-12-09)

Features

  • add localLockLimitReached (af90bcb)

Bug Fixes

  • add error message to forked child and give it a chance to die (7cf3c57)

6.2.13 (2022-11-17)

Bug Fixes

  • ready and error events are allowed wihtin sub workers (cb4228c)
  • use definition keys for status list (485060a)

6.2.12 (2022-08-02)

Bug Fixes

  • improve error message for on handler (92d42ca)

6.2.11 (2022-05-23)

Bug Fixes

  • bind correct context to process (cf70739)

6.2.10 (2022-05-23)

Bug Fixes

  • check if lockedAt has been resetted in the meantime (aa5323b)
  • improve errors for childs (8e3b827)

6.2.9 (2022-05-20)

Bug Fixes

  • job timeout check and improve error handling for childs (b365957)

6.2.8 (2022-05-11)

Bug Fixes

  • use message bus instead of signal to cancel child (fcec3a9)

6.2.7 (2022-05-11)

Bug Fixes

  • use different appraoch to find definition file (9d4c60e)

6.2.6 (2022-05-10)

Bug Fixes

  • add fork paramters to console (9f2e7fd)

6.2.5 (2022-05-10)

Bug Fixes

  • improve exit code error message (f1a5eb8)

6.2.4 (2022-05-10)

Bug Fixes

  • check if abort controller is supported (a00d611)

6.2.3 (2022-05-10)

6.2.2 (2022-05-10)

Bug Fixes

  • allow passing forkMode to every (ff274ba)

6.2.1 (2022-05-10)

Bug Fixes

  • small code cleanups and new flag to toggle (2a6e5fe)

6.2.0 (2022-05-09)

Features

  • allow to fork jobs in isolated sub process (2a68c95)

6.1.1 (2022-04-05)

6.1.0 (2022-03-21)

Features

  • check if job state update was successful before running a job (606e141)

6.0.9 (2022-03-18)

6.0.8 (2022-01-10)

6.0.7 (2021-12-12)

6.0.6 (2021-12-10)

Bug Fixes

  • ensure locked at is processed as date (3a5a0c4)

6.0.5 (2021-12-10)

Bug Fixes

  • give the test some more time (e2cacb5)
  • only update job state fields during job processing (be8e51b)

6.0.4 (2021-12-05)

Bug Fixes

  • nextRunAt value can be null (e39cfd0)

6.0.3 (2021-12-03)

Bug Fixes

  • check if job has expired before we run it (e301511)

6.0.2 (2021-10-28)

Bug Fixes

6.0.0 (2021-08-27)

⚠ BREAKING CHANGES

  • Upgrade to mongo driver 4

5.0.1 (2021-02-12)

Bug Fixes

  • update deps and switch moment-timezone to luxon (e5eb973)

5.0.0 (2020-12-06)

⚠ BREAKING CHANGES

  • Switching from ncb000gt/node-cron to harrisiirak/cron-parser for cron-pattern parsing.

    Previously month was 0-based (0=January). Going forward standard Unix pattern is used, which is 1-based (1=January).

    Please update existing cron-patterns that specify a month (4th position of a pattern). The month is now 1 - 12

    1 = January

    2 = February

    3...

    Example Execute on 1st of January
    Old 0 0 1 0 *
    New 0 0 1 1 *

    old Cron patterns

    * * * * * *
    | | | | | |
    | | | | | +-- Year              (range: 1900-3000)
    | | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
    | | | +------ Month of the Year (range: 0-11) NOTE: Difference here
    | | +-------- Day of the Month  (range: 1-31)
    | +---------- Hour              (range: 0-23)
    +------------ Minute            (range: 0-59)
    

    new cron patterns

    * * * * * *
    | | | | | |
    | | | | | +-- Year              (range: 1900-3000)
    | | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
    | | | +------ Month of the Year (range: 1-12) NOTE: Difference here
    | | +-------- Day of the Month  (range: 1-31)
    | +---------- Hour              (range: 0-23)
    +------------ Minute            (range: 0-59)
    

Co-authored-by: Aras Abbasi a.abbasi@cognigy.com

  • switching from cron to cron-parser (#16) (e5c3bf1)

4.1.6 (2020-11-19)

Bug Fixes

  • only unlock jobs with a next run at date on shutdown (a458aea)

4.1.5 (2020-11-19)

Bug Fixes

  • jobprocessor: ensure set timeout is only called once for each job in the queue (1590224)

4.1.4 (2020-11-18)

Bug Fixes

  • jobprocessor: check if set timeout value is valid (2afaaa3)

4.1.3 (2020-10-30)

Bug Fixes

  • only unlock jobs which have a nextRunAt jobs on shutdown (291f16e)
  • simplify default values (35d5424)

4.1.2 (2020-10-25)

Bug Fixes

  • isRunning for non job processor calls (a5bb965)
  • wait for start of test job (413f797)

4.1.1 (2020-10-25)

Bug Fixes

  • isRunning, check if db returns a result (e6ea7e2)

4.1.0 (2020-10-25)

Features

  • isRunning querys database again if called by client (1aaaa61)

Bug Fixes

  • job processor handling for recurring jobs could fill up queue and block processing (54bc53c)
  • job processor localQueueProcessing flag (413f673)
  • rename err to error, fix typing of DefinitionProcessor, use debug ins… (#9) (39b598e)
  • use isNaN check in isValidDate (#10) (3bc2e30)

4.0.33 (2020-10-24)

Bug Fixes

  • fix outpout of agenda job status details (82ab1a8)
  • fix outpout of agenda job status details (7b24f88)
  • fix outpout of agenda job status details (3dc0709)

4.0.32 (2020-10-24)

Bug Fixes

  • logic for datbase connection (7ee64c1)

4.0.31 (2020-10-23)

Bug Fixes

  • job-processor: emit error when db query fails (9bfabd3)

4.0.30 (2020-10-23)

Bug Fixes

  • job-processor: emit error when db query fails (eff80aa)

4.0.29 (2020-10-22)

Bug Fixes

4.0.28 (2020-10-20)

Bug Fixes

  • tests: rm console log from debugging (b211c8e)

4.0.27 (2020-10-20)

Bug Fixes

  • define: warning if job definition exists already (3fe9a6d)
  • job: ensure agenda is ready before calling save job (be4c026)
  • test: cleanup tests (c5d081a)
  • test: debug failed lock expire test (7d69680)
  • test: debug failed priority test (924287c)
  • test: fix timeout check (e92cd85)
  • typings: names -> name (c2ca928)

4.0.26 (2020-10-20)

Bug Fixes

  • test: just check if there are almost all jobs running (b2a5e6e)

4.0.25 (2020-10-20)

Bug Fixes

  • jobprocessor: check for object.fromEntries for node 10 support (#3) (b8cc61f)
  • jobprocessor: ensure returnNextConcurrencyFreeJob is not returning same job each time (11d6606)
  • jobprocessor: set job enqueud to true for future jobs (a3d4203)
  • test: unlock job test fix (6446b64)
  • more typings, minor functionality changes (#2) (b13d054)

4.0.24 (2020-10-20)

Bug Fixes

  • jobprocessor: improve checkIfJobIsStillAlive (2919083)
  • jobprocessor: prevent overloading of job queue processing (9854007)

4.0.22 (2020-10-16)

Bug Fixes

  • jobprocessor: introduce a canceled property to check if job is still alive (55b63d7)

4.0.21 (2020-10-15)

Features

Bug Fixes

3.1.0 / 2020-04-07

Stay safe!

  • Fix for skipImmediate resetting nextRunAt to current date (#860) (Thanks @AshlinDuncan!)
  • Fix deprecated reconnect options (#948) (Thanks @ekegodigital!)
  • Add ability to set a skip when querying jobs. (#898) (Thanks @cjolif!)

Internal:

  • Fixed deprecated MongoDB functions in tests (#928) (Thanks @MichielDeMey!)
  • Updated devDependencies

Thank you @koresar, @sampathBlam, and @MichielDeMey helping to review PRs for this release! 👏

3.0.0 / 2020-02-13

  • Support MongoDB's Unified Topology Design (#921) (Thanks @viktorzavadil!)
  • Fix: check that the new nextRunAt is different that the previous nextRunAt (#863) (Thanks @RaphaelRheault!)
  • Update dependencies. Most notably MongoDB driver 3.4 → 3.5 (#899, #900, #903, #906, #908, #910, #912, #913, #920, #922)
  • Documentation updates, thanks @MichielDeMey and @Sunghee2. (#923 & #907)

BREAKING

  • Stop testing for Node.js 8. This might still work but we're no longer actively testing for it. (#925)

2.3.0 / 2019-12-16

  • Improved performance in situations when there are many "expired" jobs in the database (#869) (Thanks @mfred488!)
  • Fix periodic node.js process unhandledRejection (#887) (Thanks @koresar and @Scorpil)
  • Update dependencies

2.2.0 / 2019-11-24

  • Fix skipImmediate option in .every (#861) (Thanks @erics2783!)
  • Add try/catch block to agenda#now method (#876) (Thanks @sampathBlam!)
  • Refactor job queuing mechanism. Agenda n ow guarantees priority when executing jobs scheduled the same datetime. Fixes also some tests. (#852) (Thank you @dmbarreiro!)
  • Update dependencies (Kudos @simison!) Most notably mongodb ~3.2.7 -> ~3.3.0 (changelog) — highlights:
    • Mongo DB Server Version 4.2 feature support
    • Merged mongodb-core into node-mongodb-native
    • Beta support for MongoDB Client-Side Encryption
    • SRV Polling for Sharded Clusters
  • Updates to documentation (Thank you @lautarobock, @sampathBlam, @indatawetrust)

2.1.0 / 2019-09-09

  • Support async functions in job processing (#653) (thanks @princjef!)
  • Allow sorting and limiting jobs when searching (#665) (thank you @edwin-jones)
  • Update MongoClient connection settings with useNewUrlParser: true to remove the deprecation warning. (#806) (thanks @dpawson905!)
  • Allow valid date strings when scheduling (#808) (Thanks @wingsbob!)
  • Update dependencies (#820)
  • Update documentation (kudos @dandv, @pedruino and many others!)
  • Fix linting errors (#847) (thanks @dmbarreiro!)

2.0.2 / 2018-09-15

  • Fixes a MongoDB connection string issue with Atlas (#674

2.0.1 / 2018-08-30

  • Fix a bug where job.touch() wasn't promise based, as it should've been (#667

2.0.0 / 2018-07-19

  • Rewrite tests: replace mocha and blanket with ava and nyc (#506)
  • Optimization: don't try and unlock jobs when _lockedJobs is empty (#509)
  • Code cleanup (#503)
  • Ensure tests pass for Node.js version 10 #608)
  • Add skipImmediate to repeatEvery() options to skip immediate run of repeated jobs when Agenda starts. See documentation (#594)
  • Fixes some flaky tests
  • Adds docs generator (npm run docs to generate /docs)

BREAKING

  • Rewrite Agenda API support promises! (#557)

    No more callbacks! Instead of:

    function graceful() {
      agenda.stop(function() {
        process.exit(0);
      });
    }

    You need to:

    async function graceful() {
      await agenda.stop();
      process.exit(0);
    }

    You don't anymore have to listen for start event. Instead you can do:

    await agenda.start();
    agenda.every('10 minutes', 'example');

    However, this will still work:

    agenda.on('ready', function () {
      agenda.every('10 minutes', 'example');
      agenda.start();
    });

    See the documentation for more!

  • Drop support for Node.js versions 4, 5 and 6 (#557 / #608)

  • Drop support for MongoDB 2.4 (#497)

  • Update Native MongoDB driver to 3.1 from 2.2 (#616)

  • Jobs emit errors instead of throwing them

1.0.3 / 2017-10-17

1.0.2 / 2017-10-17

1.0.1 / 2017-10-10

  • Update dependencies cron and debug (#505)

1.0.0 / 2017-08-12

  • Gracefully recover from losing connection to MongoDB (#472)
  • Code cleanup (#492)

BREAKING

Previously Agenda would treat months as 0-11 where as normally, cron months are parsed as 1-12.

* * * * * *
| | | | | |
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 0-11) NOTE: Difference here
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

Starting in version 1.0.0, cron will be parsed in the standard UNIX style:

* * * * * *
| | | | | |
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12) NOTE: Difference here
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

0.10.2 / 2017-08-10

0.10.1 / 2017-08-10

  • Unpublished and re-published as v0.10.2

0.10.0 / 2017-08-08

  • Replace the deprecated findAndModify method from native MongoDB driver to findOneAndUpdate (#448)
  • Going forward, we won't ensure Node.js v0.10 and v0.11 compatibility anymore (#449)
  • Code cleanup (#491, #489, #488, #487)

0.9.1 / 2017-03-22

Republish release for NPM. Includes fixes from 0.9.0 release:

  • add support for mongoose.connection for agenda.mongo(), fixes #156
  • Fix for race condition in the afterEach clean up code (#355)
  • Fixes + protects against concurrency not being honored (#379)

0.9.0 / 2016-12-28

  • add support for mongoose.connection for agenda.mongo(), fixes #156
  • Fix for race condition in the afterEach clean up code (#355)
  • Fixes + protects against concurrency not being honored (#379)
  • Bump mongodb dep version to support ssl conns (#368)
  • Increase Mongo compatability to 2.4

0.8.1 / 2016-05-08

  • Add Node v6 to CI
    1. Update dev dependencies for out of date. 2. Small fix to job.js for invalid repeatAt
  • Update .npmignore
  • Fix doc: cb not marked as optional (closes #279)
  • Including nextRunAt check in query for on the fly lock.
  • Picking up any job with an expired lock (not just recurring or queued).
  • Fixed failing test
  • throw on processJobResult error
  • Requeuing concurrency blocked jobs wrt priority.
  • Processing the next job that is not blocked by concurrency.
  • Fix test which fails only sometimes
  • Add agendash as alternative ui
  • Merge pull request #288 from diesal11/master

0.8.0 / 2016-02-21

  • Implementing lock limit
  • Use callback to handle errors if we can.

0.7.9 / 2016-02-05

  • fix: ReferenceError: MongoError is not defined

0.7.8 / 2016-02-03

  • fix: computeNextRunAt timezone bug

0.7.7 / 2016-01-25

  • feat: add timezone option for repeatAt.
  • fix: job locking logic
  • fix: bug with jobs expiring and being enqueued anyway
  • fix: bug where jobs wouldn't run concurrently
  • fix: agenda throwing an exception when starting a job defined on another instance
  • fix: possible bug when using extended Array.prototype

0.7.6 / 2016-01-04

  • feat: Add failCount attribute to jobs
  • fix: job priority for on the fly job lock and queueing is now respected
  • fix: make agenda.cancel no longer require a callback
  • fix: stale jobs running after a more up-to-date job has completed
  • fix: fail/success event emit after jobs have been saved in the database
  • fix: ready event when using config.mongo

0.7.5 / 2015-12-05

  • Adds options.insertOnly to job.unique that prevents the job from being updated multiple times on multiple runs

0.7.4 / 2015-11-26

  • fix job priority scheduling

0.7.3 / 2015-11-22

  • add support for success callbacks on schedule, every and now (@mgregson)
  • using self for reference to collection (@3choBoomer)
  • emit ready from db_init (@jdiamond)

0.7.2 / 2015-10-22

  • Rollback job completion callback to pre-0.7.0
  • Emit events when Agenda init is ready or has failed

0.7.0 / 2015-09-29

  • Switch from mongoskin to mongodb native. Big thanks to the classdojo team for this. Shoutouts to @liamdon, @jetzhou and @byronmwong for the help!

0.6.28 / 2015-02-13

  • Fix for when _findAndLockNextJob returns multiple jobs.

0.6.27 / 2015-02-04

  • code cleanup, fix leaking ignoreErrors

0.6.26 / 2014-11-30

  • fix double run bug

0.6.25 / 2014-11-20

  • Allow specifying mongo config (optionally)

0.6.24 / 2014-10-31

  • Fix .every() running when using cron strings.

0.6.23 / 2014-10-25

  • Remove debugger

0.6.22 / 2014-10-22

  • add job.unique (@nwkeeley)

0.6.21 / 2014-10-20

  • Re-add tests for those who use the npat option.

0.6.20 / 2014-10-14

  • add job.disable() and job.enable()
  • Added .npmignore for test/ build scripts.

0.6.19 / 2014-09-03

  • Create database indexes when initializing Agenda instance (@andyneville)

0.6.18 / 2014-08-16

  • Implemented job.isRunning()
  • Fixed issue where jobs would continue being processed after agenda is explicitly stopped
  • Fixed complete event being emitted before asynchronous jobs are finished

0.6.17 / 2014-08-11

  • add job.repeatAt

0.6.16 / 2014-06-16

  • fix job queue being processed even when agenda was stopped
  • fix agenda.every method

0.6.15 / 2014-06-11

  • fix agenda.every overwriting nextRunAt [closes #70]

0.6.14 / 2014-06-06

  • Added agenda.cancel function
  • Fix more circumstances where jobs re-create after remove

0.6.13 / 2014-06-01

  • fix jobs resaving after remove [closes #66]
  • fix jobs skipping in line from database querying

0.6.12/ 2014-05-22

  • update saveJob to allow for pre-set Ids [closes #64]

0.6.11/ 2014-05-19

  • add job.touch to reset lock lifetime [references #63]

0.6.10 / 2014-05-13

  • make job saving use agenda._name

0.6.9 / 2014-05-13

  • add agenda.name config method
  • fix agenda.mongo not being chainable

0.6.8 / 2014-05-06

  • add graceful job unlocking to stop

0.6.7 / 2014-04-21

  • Implement, document, and test defaultLockLifetime [@shakefu]

0.6.6 / 2014-04-21

  • Bump date.js version [@psema4]

0.6.5 / 2014-04-17

  • mongoskin version bump (better support for mongodb 2.6) [@loginx]

0.6.4 / 2014-04-09

  • fix $setOnInsert with empty obj cause mongodb 2.6 complain [@inetfuture]

0.6.3 / 2014-04-07

  • fix cron-jobs executing multiple times
  • fail the job if repeat interval is wrong

0.6.2 / 2014-03-25

  • fix bug that resulted in jobs scheduled in memory to always re-run
  • Update mongoskin to 1.3

0.6.1 / 2014-03-24

  • allow every and schedule to take array of job names

0.6.0 / 2014-03-21 (NO BREAKING CHANGES)

  • convert to using setTimeout for precise job scheduling [closes #6]

0.5.10/ 2014-03-20

  • fix agenda.every not properly saving jobs
  • improve instantiating jobs, fixes bug where certain attrs weren't loaded in

0.5.9 / 2014-03-10

  • add job#remove method

0.5.8 / 2014-03-07

  • Fixed single jobs not being saved properly [closes #38]

0.5.7 / 2014-03-06

  • fix every re-running jobs out of queue at load

0.5.6 / 2014-02-18

  • Added failing for jobs with undefined definitions
  • Added agenda.purge() to remove old jobs

0.5.5 / 2014-01-28

  • added support to directly give mongoskin object, to help minimize connections

0.5.4 / 2014-01-09

  • Added start event to jobs. (@clayzermki)

0.5.3 / 2014-01-06

  • Added agenda.now method

0.5.2 / 2014-01-06

  • Added ability for job.fail to take an error

0.5.1 / 2013-01-04 (Backwards compatible!)

  • Updated version of humanInterval, adding weeks and months support

0.5.0 / 2013-12-19 (Backwards compatible!)

  • Added job locking mechanism, enabling support for multiple works / agenda instances (@bars3s)

0.4.4 / 2013-12-13

  • fix job.toJson method: add failReason & failedAt attrs (Broken in 0.4.3 and 0.4.2)
  • fix job cb for working with 'q' promises

0.4.3 / 2013-12-13

  • fix job.schedule's taking Date object as 'when' argument [@bars3s]

0.4.2 / 2013-12-11

  • Refactored Job to ensure that everything is stored as an ISODate in the Database. [Closes #14] [@raisch]

0.4.1 / 2013-12-10

  • Added support for synchronous job definitions

0.4.0 / 2013-12-04

  • Added Cron Support [Closes #2]
  • removed modella dependency

0.3.1 / 2013-11-19

  • Fix for setImmediate on Node 0.8

0.3.0 / 2013-11-19

  • Added Events to the Event Queue [References #7]

0.2.1 / 2013-11-14

  • Fixed a bug where mongo wasn't giving updated document

0.2.0 / 2013-11-07

  • Added error for running undefined job. [Closes #4]
  • Fixed critical error where new jobs are not correctly saved.

0.1.3 / 2013-11-06

  • Small Bug fix for global-namespace pollution

0.1.2 / 2013-10-31

  • Updated write concern to avoid annoying notices

0.1.1 / 2013-10-28

  • Removed unecessary UUID code

0.1.0 / 2013-10-28

  • Initial Release