All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
Diff for unreleased
telemetry
v1.0.0
support (#483)- Logger Metadata (#462 & #464)
- Support setting job
state
in config (#463)
- Invalid Timezone fix in
ExecutionBroadcaster
(#468)
Diff for 3.4.0
- Support manual job triggering (#459)
Diff for 3.3.0
- Telemetry Support (#415)
- Properly override jobs with duplicate name (#392)
- Simplify
TaskRegistry
and make tests deterministic
Diff for 3.2.0
- Additional Supervisor Configuration for Clustering (#450)
Diff for 3.1.0
- Fix Warnings with Clock Skew (#449)
Diff for 3.0.2
ClockEvent
order corrected
Diff for 3.0.1
- Fix
@reboot
Cron Expression (#437)
Diff for 3.0.0
- Update Docs
Diff for 3.0.0-rc.3
- The
Quantum.Storage
behaviour contains a new mandatorychild_spec/1
callback.
Diff for 3.0.0-rc.2
- 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 toQuantum
Quantum.Storage.Adapter
has been renamed toQuantum.Storage
- The
global
mode has been removed. It will be reimplemented if a stable replacement is found.
Diff for 3.0.0-rc.1
- Native Date Library (via #405)
- Adding of inactive Jobs (via #409)
- GenStage 1.0 compatibility (via #424)
- Doc Fixes (#394, #396, #400, #401)
Diff for 2.4.0
- Faster Startup duration for non-global (Fixes #376)
Diff for 2.3.4
- Fix & Test Swarm Handoff & Conflict Resolution
- Fix Compilation Error
- Fix Executor Stat Options for GenStage ~> 0.12.0
Diff for 2.3.3
- Global Clustering Worker Start
Diff for 2.3.2
- Fixed Regression in Run Strategy Random
Diff for 2.3.1
- Experimental Storage API
- Use Swarm for clustering to prevent broken cluster state
- Better search for available nodes for run strategies
Diff for 2.3.0
- Moved the Repository into Organization & Correct all the URL's
- Fixed Dialyzer Warnings
Diff for 2.2.7
- Fixed problem with Daylight Saving Time for jobs with timezone other than UTC.
Diff for 2.2.6
- Omit
gen_stage
warning on~> 0.13
Diff for 2.2.5
- Relax
timex
dependency
Diff for 2.2.4
- Fixed compatibility with
gen_stage ~> 0.12
Diff for 2.2.3
- Better Debugging Capabilities
- Relaxed version requirements for
gen_stage
Diff for 2.2.2
- sometimes the task supervisor was not running in a cluster
Diff for 2.2.1
Diff for 2.2.0
- Local run strategy
Diff for 2.1.3
- Runtime Added Jobs are executed right away instead of waiting for the next job execution.
- Fix Typo in Doc
Diff for 2.1.2
- Distillery is not mentioned in list of package managers
- Source is not formatted properly
- Removed unused Alias from
Quantum.Job
- Hot upgrade is not possible due to missing supervisor
Diff for 2.1.1
- Resolved some Dialyzer Warnings
Diff for 2.1.0
- Resolved some Dialyzer Warnings
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.
- Replaced
call
withcast
Scheduler.add_job
Scheduler.deactivate_job
Scheduler.activate_job
Scheduler.delete_job
Scheduler.delete_all_jobs
- The overlap handling is removed from the Job struct.
- removed
Job.pids
- removed
Job.executable?
- removed
Diff for 2.0.4
- Fix Race Condition with reboot in Runner state
Diff for 2.0.3
@reboot
cron expressions
Diff for 2.0.2
- Updated Docs.
Diff for 2.0.1
- Timezone in job configuration is now normalized into a job.
Diff for 2.0.0
The whole library has been refactored. See the Migration Guide.
Diff for 2.0.0-beta.2
The whole library has been refactored. See the Migration Guide.
Diff for 2.0.0-beta.1
The whole library has been refactored. See the Migration Guide.
Diff for 1.9.2
Diff for 1.9.1
Diff for 1.9.0
- Three modules were removed and replaced by crontab.
Quantum.Matcher
Quantum.Parser
Quantum.Translator
- The whole cron expression syntax is now supported.
- Crons can now be configured for Umbrella applications. See the
README
for the new syntax.
- 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.
- The configuration property
cron
is deprecated. Use the app configuration instead.
Diff for 1.8.1
- 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)
- 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)
- Timex references in readme (Coburn Berry)
- License badge in README
Diff for 1.8.0
- Requires Elixir >= 1.3
- Updated C4 contribution process to RFC42
- Updated timex dependency to 3.0 (Svilen Gospodinov)
- Same task could be generated multiple times in a cluster (Po Chen)
- Elixir 1.3.0 introduced unsafe var warnings (Jamie J Quinn)
- Typo in README (Uģis Ozols)
- Code coverage below 100% (Lucas Charles)
- Unused alias (Philip Giuliani)
Diff for 1.7.1
- Optional per-job timezone support
- 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
Diff for 1.7.0
- ToC to README
- Documentation for
overlap
option - Elixir 1.2 to Travis-CI config
- Prevent duplicate job-names at runtime (Kai Faber)
- ToC markdown
- Default values are now configurable
- Updated all dependencies
- Required Elixir version is now
>= 1.2
- 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)
Diff for 1.6.1
@reboot
entries are throwing errors- Credo warnings and software design suggestions
- Elixir 1.2 warnings
- Dependency 'credo' updated
- Refactored range variables
.gitignore
updated
Diff for 1.6.0
- 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
- 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)
Diff for 1.5.0
- Ability to run jobs on exact node (Rodion Vshevtsov)
- Documentation of named jobs
- OTP 17.5 and 18.0 to Travis tests
ex_doc
dependency version
- Typos in README
Diff for 1.4.0
- Named jobs and the ability to (de)activate them (Rodion Vshevtsov)
- Doc annotations for functions
- Inch-CI integration
- Updated
ex_doc
dependency
Diff for 1.3.2
- Timezone option to README.
- Using
@reboot
lead to crash.
Diff for 1.3.1
- Added contributors to changelog and project description
- Option to use local timezone instead of UTC.
- Tables in README use markdown format
Diff for 1.3.0
- Allow cron-like job formatting (
"* * * * * MyApp.MyModule.my_method"
) (Rodion Vshevtsov) - Allow defining functions as tuple (
{"Module", :method}
) in config (Rodion Vshevtsov) - Note about UTC (Lenz Gschwendtner)
Diff for 1.2.4
- 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.
- Unnecessary guard clause
- Unused parse/3 functions
- Unused call to String.split on patterns starting with "*/"
Diff for 1.2.3
- Support for
@reboot
- Does not convert jobs defined in config
Diff for 1.2.2
- Support for
@annually
and@midnight
- Function order in Quantum.Matcher
- Renamed private translate function to do_translate
- Do not convert and translate cron expressions on every tick
- 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
Diff for 1.2.1
- 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
- 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
- Typos in changelog
- Quantum.start_link/1
Diff for 1.2.0
- Date is updated in state only if it changed
- Wake up every minute instead of every second
- 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
Diff for 1.1.0
- Add ability to schedule jobs at runtime and ability to view jobs (Dan Swain)
- Relax Elixir version
Diff for 1.0.4
- Written month and weekday names are not parsed
Diff for 1.0.3
- Do not fire on first tick
Diff for 1.0.2
- Special expressions are not correctly in all cases
- Functions to add and reset jobs
Diff for 1.0.1
- Configure cronjobs in config
- Add application
- Parsing of cron expression fails
Diff for 1.0.0
- Initial commit