Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

Unreleased

Diff for unreleased

3.4.0 - 2021-08-10

Added

  • telemetry v1.0.0 support (#483)
  • Logger Metadata (#462 & #464)
  • Support setting job state in config (#463)

Fixed

  • Invalid Timezone fix in ExecutionBroadcaster (#468)

Diff for [3.4.0]

3.3.0 - 2020-09-25

Added

  • Support manual job triggering (#459)

Diff for 3.3.0

3.2.0 - 2020-09-14

Added

  • Telemetry Support (#415)

Fixed

  • Properly override jobs with duplicate name (#392)
  • Simplify TaskRegistry and make tests deterministic

Diff for 3.2.0

3.1.0 - 2020-08-18

Added

  • Additional Supervisor Configuration for Clustering (#450)

Diff for 3.1.0

3.0.2 - 2020-08-18

Fixed

  • Fix Warnings with Clock Skew (#449)

Diff for 3.0.2

3.0.1 - 2020-06-16

Fixed

  • ClockEvent order corrected

Diff for 3.0.1

3.0.0 - 2020-06-11

Fixed

  • Fix @reboot Cron Expression (#437)

Diff for 3.0.0

3.0.0-rc.3 - 2020-02-28

Fixed

  • Update Docs

Diff for 3.0.0-rc.3

3.0.0-rc.2 - 2020-02-28

Changed

  • The Quantum.Storage behaviour contains a new mandatory child_spec/1 callback.

Diff for 3.0.0-rc.2

3.0.0-rc.1 - 2020-02-26

Changed

  • A lot of function that were not for public use have been undocumented. Those are now considered internal and may break at any point in time.
  • Quantum.Scheduler has been renamed to Quantum
  • Quantum.Storage.Adapter has been renamed to Quantum.Storage
  • The global mode has been removed. It will be reimplemented if a stable replacement is found.

Diff for 3.0.0-rc.1

2.4.0 - 2020-02-25

Added

  • Native Date Library (via #405)
  • Adding of inactive Jobs (via #409)

Fixed

  • GenStage 1.0 compatibility (via #424)
  • Doc Fixes (#394, #396, #400, #401)

Diff for 2.4.0

2.3.4 - 2019-01-06

Fixed

  • Faster Startup duration for non-global (Fixes #376)

Diff for 2.3.4

2.3.3 - 2018-09-06

Fixed

  • Fix & Test Swarm Handoff & Conflict Resolution
  • Fix Compilation Error
  • Fix Executor Stat Options for GenStage ~> 0.12.0

Diff for 2.3.3

2.3.2 - 2018-08-21

Fixed

  • Global Clustering Worker Start

Diff for 2.3.2

2.3.1 - 2018-08-13

Fixed

  • Fixed Regression in Run Strategy Random

Diff for 2.3.1

2.3.0 - 2018-08-10

Added

  • Experimental Storage API

Fixed

  • Use Swarm for clustering to prevent broken cluster state
  • Better search for available nodes for run strategies

Diff for 2.3.0

2.2.7 - 2018-03-22

Changed

  • Moved the Repository into Organization & Correct all the URL's

Fixed

  • Fixed Dialyzer Warnings

Diff for 2.2.7

2.2.6 - 2018-03-21

Fixed

  • Fixed problem with Daylight Saving Time for jobs with timezone other than UTC.

Diff for 2.2.6

2.2.5 - 2018-02-26

Fixed

  • Omit gen_stage warning on ~> 0.13

Diff for 2.2.5

2.2.4 - 2018-02-23

Fixed

  • Relax timex dependency

Diff for 2.2.4

2.2.3 - 2018-02-13

Fixed

  • Fixed compatibility with gen_stage ~> 0.12

Diff for 2.2.3

2.2.2 - 2018-02-08

Added

  • Better Debugging Capabilities

Fixed

  • Relaxed version requirements for gen_stage

Diff for 2.2.2

2.2.1 - 2018-01-03

Fixed

  • sometimes the task supervisor was not running in a cluster

Diff for 2.2.1

2.2.0 - 2017-11-07

Diff for 2.2.0

Added

  • Local run strategy

2.1.3 - 2017-11-07

Diff for 2.1.3

Fixed

  • Runtime Added Jobs are executed right away instead of waiting for the next job execution.
  • Fix Typo in Doc

2.1.2 - 2017-11-04

Diff for 2.1.2

Added

  • Distillery is not mentioned in list of package managers

Changed

  • Source is not formatted properly

Fixed

  • Removed unused Alias from Quantum.Job
  • Hot upgrade is not possible due to missing supervisor

2.1.1 - 2017-10-02

Diff for 2.1.1

Fixed

  • Resolved some Dialyzer Warnings

2.1.0 - 2017-09-10

Diff for 2.1.0

Fixed

  • Resolved some Dialyzer Warnings

2.1.0-beta.1 - 2017-08-20

Diff for 2.1.0-beta.1

The internal handling has been refactored onto gen_stage. There were a few Breaking Changes which should not influence a user of the library.

Changed

  • Replaced call with cast
    • Scheduler.add_job
    • Scheduler.deactivate_job
    • Scheduler.activate_job
    • Scheduler.delete_job
    • Scheduler.delete_all_jobs

Removed

  • The overlap handling is removed from the Job struct.
    • removed Job.pids
    • removed Job.executable?

2.0.4 - 2017-09-01

Diff for 2.0.4

Fixed

  • Fix Race Condition with reboot in Runner state

2.0.3 - 2017-08-29

Diff for 2.0.3

Fixed

  • @reboot cron expressions

2.0.2 - 2017-08-23

Diff for 2.0.2

Fixed

  • Updated Docs.

2.0.1 - 2017-08-23

Diff for 2.0.1

  • Timezone in job configuration is now normalized into a job.

2.0.0 - 2017-07-20

Diff for 2.0.0

The whole library has been refactored. See the Migration Guide.

2.0.0-beta.2 - 2017-07-13

Diff for 2.0.0-beta.2

The whole library has been refactored. See the Migration Guide.

2.0.0-beta.1 - 2017-06-07

Diff for 2.0.0-beta.1

The whole library has been refactored. See the Migration Guide.

1.9.2 - 2017-05-19

Diff for 1.9.2

1.9.1 - 2017-03-17

Diff for 1.9.1

1.9.0 - 2017-02-07

Diff for 1.9.0

Removed

  • Three modules were removed and replaced by crontab.
    • Quantum.Matcher
    • Quantum.Parser
    • Quantum.Translator

Fixed

  • The whole cron expression syntax is now supported.
  • Crons can now be configured for Umbrella applications. See the README for the new syntax.

Changed

  • Cron Expressions can now be provided via the %Crontab.CronExpression{} struct or via the ~e[CRON EXPRESSION] sigil.
  • Cron Expressions can now be extended. This way second granularity of the expressions can be provided.

Deprecated

  • The configuration property cron is deprecated. Use the app configuration instead.

1.8.1 - 2016-11-20

Diff for 1.8.1

Changed

  • Clarity on the table to not use full name of day (Coburn Berry)
  • Travis testing against erlang 19.1 and elixir 1.3.3 (Julius Beckmann)
  • Don't allow "local" timezone. Replace Timex w. Calendar (Lau Taarnskov)

Fixed

  • Global cannot be used directly (Po Chen)
  • Support for timezones other than utc or local not in readme (Coburn Berry)
  • Timezone as string not working in config (Daniel Roux)

Removed

  • Timex references in readme (Coburn Berry)
  • License badge in README

1.8.0 - 2016-09-19

Diff for 1.8.0

Changed

  • Requires Elixir >= 1.3
  • Updated C4 contribution process to RFC42
  • Updated timex dependency to 3.0 (Svilen Gospodinov)

Fixed

Removed

1.7.1 - 2016-03-24

Diff for 1.7.1

Added

  • Optional per-job timezone support

Fixed

  • Nodes defaulting in %Quantum.Job struct
  • job.nodes defaulting in the normalizer
  • Test suite after changing defaulting of nodes property for the %Quantum.Jobs{} struct

1.7.0 - 2016-03-09

Diff for 1.7.0

Added

  • ToC to README
  • Documentation for overlap option
  • Elixir 1.2 to Travis-CI config
  • Prevent duplicate job-names at runtime (Kai Faber)

Changed

  • ToC markdown
  • Default values are now configurable
  • Updated all dependencies
  • Required Elixir version is now >= 1.2

Fixed

  • Overlap option was not set to jobs
  • Incorrect example in README
  • Timezone is not configurable at runtime
  • Credo warnings
  • GenServer restarts when one of the jobs crashes (#82)

1.6.1 - 2015-12-09

Diff for 1.6.1

Fixed

  • @reboot entries are throwing errors
  • Credo warnings and software design suggestions
  • Elixir 1.2 warnings

Changed

  • Dependency 'credo' updated
  • Refactored range variables
  • .gitignore updated

1.6.0 - 2015-11-25

Diff for 1.6.0

Added

  • PID of last executed task to job struct
  • Credo code linter (only for dev and test)
  • Total downloads badge to README
  • Elixir 1.1.0 and Erlang 18.1 to Travis-CI config

Fixed

  • Max hour is 23, not 24
  • Long-running jobs could overlap
  • Typo in README (Lucas Charles)
  • Incorrect function and response types in readme (Bart van Zon)
  • Unnamed job tuples cannot take args (Lucas Charles)
  • Job names can only be atoms and can't be GC (Luis Hurtado)

1.5.0 - 2015-09-24

Diff for 1.5.0

Added

  • Ability to run jobs on exact node (Rodion Vshevtsov)
  • Documentation of named jobs
  • OTP 17.5 and 18.0 to Travis tests

Changed

  • ex_doc dependency version

Fixed

  • Typos in README

1.4.0 - 2015-09-02

Diff for 1.4.0

Added

  • Named jobs and the ability to (de)activate them (Rodion Vshevtsov)
  • Doc annotations for functions
  • Inch-CI integration

Changed

  • Updated ex_doc dependency

1.3.2 - 2015-08-22

Diff for 1.3.2

Added

  • Timezone option to README.

Fixed

  • Using @reboot lead to crash.

1.3.1 - 2015-07-27

Diff for 1.3.1

Added

  • Added contributors to changelog and project description
  • Option to use local timezone instead of UTC.

Changed

  • Tables in README use markdown format

1.3.0 - 2015-07-15

Diff for 1.3.0

Added

1.2.4 - 2015-06-22

Diff for 1.2.4

Changed

  • Renamed parse/5 functions to do_parse/5 and made them private
  • Always use {expression, fun} for jobs
  • Moved duplicate code to new private function only_multiplier_of/2
  • Moved code to normalize jobs to separate module
  • Correctly use passed state in Quantum.init/1 function
  • Moved reboot logic to executor.

Removed

  • Unnecessary guard clause
  • Unused parse/3 functions
  • Unused call to String.split on patterns starting with "*/"

1.2.3 - 2015-06-15

Diff for 1.2.3

Added

  • Support for @reboot

Fixed

  • Does not convert jobs defined in config

1.2.2 - 2015-06-15

Diff for 1.2.2

Added

  • Support for @annually and @midnight

Changed

  • Function order in Quantum.Matcher
  • Renamed private translate function to do_translate
  • Do not convert and translate cron expressions on every tick

Fixed

  • Adding a job using Quantum.add_job/2 does not convert to lowercase
  • Adding a job using Quantum.add_job/2 does not translate day/month names

1.2.1 - 2015-06-13

Diff for 1.2.1

Added

  • Test for handle_info(:tick_state)
  • Dependencies to generate hexdocs
  • Badge for hexdocs
  • Link to docs in hex package info
  • Type specs and doc annotations

Changed

  • Quantum.Application does not call Quantum.start_link/1 anymore
  • Moved match logic to separate module Quantum.Matcher
  • Moved parsing logic to separate module Quantum.Parser
  • Moved execution logic to separate module Quantum.Executor
  • Moved translation logic to separate module Quantum.Translator

Fixed

  • Typos in changelog

Removed

  • Quantum.start_link/1

1.2.0 - 2015-06-11

Diff for 1.2.0

Changed

  • Date is updated in state only if it changed
  • Wake up every minute instead of every second

Fixed

  • Intervals on ranges are not correctly parsed
  • Hour constraints are not correct (Lenz Gschwendtner)
  • There is no changelog
  • Code coverage is low
  • Explicit variables are not needed
  • Pattern matching can be simplified

1.1.0 - 2015-05-28

Diff for 1.1.0

Added

  • Add ability to schedule jobs at runtime and ability to view jobs (Dan Swain)

Changed

  • Relax Elixir version

1.0.4 - 2015-05-26

Diff for 1.0.4

Fixed

  • Written month and weekday names are not parsed

1.0.3 - 2015-05-01

Diff for 1.0.3

Fixed

  • Do not fire on first tick

1.0.2 - 2015-04-29

Diff for 1.0.2

Fixed

  • Special expressions are not correctly in all cases

Removed

  • Functions to add and reset jobs

1.0.1 - 2015-04-27

Diff for 1.0.1

Added

  • Configure cronjobs in config
  • Add application

Fixed

  • Parsing of cron expression fails

1.0.0 - 2015-04-27

Diff for 1.0.0

Added

  • Initial commit