Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
625 lines (389 sloc) 21.1 KB

Next

Contributions welcome! https://github.com/agenda/agenda/pulls

5.0.0 / 2022-11-07

BREAKING

  • MongoDB 3.4 and 3.6 are not supported anymore. Only MongoDB v4.0 and above are supported.

Otherwise, all the changes are minor: https://github.com/agenda/agenda/releases/tag/v5.0.0

4.4.0 / 2022-10-19

  • Feat: Add drain() method for graceful process shutdowns (#1488) thanks @nmehmedrnd

    4.3.0 / 2022-05-10

  • Feat: disableAutoIndex

  • Feat: shouldSaveResult

    4.2.1 / 2021-08-09

  • fix: deprecation warning for collection.findOneAndUpdate (#1338) thanks @frobinsonj

    4.2.0 / 2021-08-05

  • Feat: Add top level disable and enable (#1109) thanks @pdfowler

  • fix(history): match cron-parser pattern (#1335) thanks @dockleryxk

  • fix: "RangeError: Maximum call stack size exceeded" (#1365) thanks @koresar

  • fix: JobAttributes.lockedAt to allow null values (#1340) thanks @tjramage

  • Updated dependencies: mongodb@3.6.6, lodash@4.17.21, as well as various dev dependencies.

  • Added node 16 in tests (#1314) thanks @simison

    4.1.3 / 2021-05-02

  • fix: export cjs and es (#1298) thanks @koresar

    4.1.2 / 2021-05-02

  • fix: broken main cjs export works again. See more here.

    4.1.2 / 2021-04-04

  • Docs, JSDocs and TS typo fixes. Thanks @niftylettuce @thebestnom @simllll and @Igor-lkm

  • fix: typescript export needs es6 (#1268) thanks @simllll

    4.1.1 / 2021-03-02

  • Compatibility with DefinitelyTyped/agenda (#1258) thanks @boredland

    4.1.0 / 2021-02-25

  • Added type information (#1202 #1243) thanks @boredland, @leonardlin

    4.0.1 / 2021-01-16

  • Fix "Cannot find module ./lib/agenda" bug due us not targeting correct ES5 files for distribution after the TypeScript rewrite. (#1193)

  • Update dependencies

    4.0.0 / 2021-01-16

  • Add agenda.close() (#450) thanks @simison

  • Add ability to schedule jobs with startDate, endDate, and skipping (#361) thanks @suryanaik

  • Fix issue with concurrent locking beyond locklimit (#1086) thanks @leonardlin

  • Fix issue with too many locks being set asynchronously (#1119) thanks @GimpMaster

  • Upgrade mongodb dependency ~3.5.0 -> ~3.6.2 (security) (#1122) thanks @Elisa23

  • Upgrade to Human Interval v2, a refactor using numbered package:

    • Supports all the formats as previously, and more!
    • Supports numbers written as English words (one, two hundred)
    • Supports time expressions in singular and plural (minute and minutes)
    • Supports negative numbers (-2)
    • Supports hyphenated words (twenty-five)
  • Upgrade various dependencies

BREAKING

  • Switch from ncb000gt/node-cron to harrisiirak/cron-parser for cron-pattern parsing. See issue (#475)

    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** *             |
    
    ([#1150](https://github.com/agenda/agenda/pull/1150))
    
    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
    
    ```
    * * * * * *
    | | | | | |
    | | | | | +-- Day of the Week   (range: 0-7, 0 or 7 is Sunday)
    | | | | +---- 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)
    +------------ Second            (range: 0-59, optional)
    ```
    

    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