All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Change transaction constructors to accept parent store instance as argument
- Add support for custom storage backends
- Add memory storage backend
- Add
Mel::Job::Template#run
abstract method
- Rename
Mel::Carbon::DeliverLaterStrategy
toDeliverLater
- Remove
src/worker.cr
- Upgrade
GrottoPress/pond
shard to v2.0
- Change default task
retries
to[2, 4, 8, 16]
- Replace
Fiber.yield
withsleep 1.microsecond
in loops to reduce CPU load
- Add
from:
parameter toMel::Job::Every#run_every
methods - Add
from:
parameter toMel::Job::On#run_on
methods
- Skip missed schedules to avoid running tasks multiple times on next schedule
- Fix wrong ordering of logs during task run
- Add support for retries with backoffs
- Add jitter to poll interval
- Convert
Mel::Task
module to anabstract class
- Convert
Mel::RecurringTask
module to anabstract class
- Upgrade
jgaskins/redis
shard to v0.8 - Make
Mel::Task#run
method only available to workers - Remove hyphens from default task IDs (UUIDs)
- Revert default
.poll_interval
to 3 seconds
- Avoid a single task running multiple times if using multiple workers
- Remove
Mel::Task::Any
alias
- Ensure
Mel::Progress::Query#get
methods return the expected type
- Fix compile error from query
#get
methods if passed aredis
argument - Fix wrong return values from query
#get
methods if passed aredis
argument
- Remove
redis
parameter from all query#get
methods
- Fix compile error when querying with tuple IDs instead of array IDs
- Save progress report in redis as JSON-serialized string instead of hash
- Remove
Mel::Progress::Report.find
methods
- Add
Mel::Progress::Report#pending?
- Rename
Mel::Progress::Report#moving?
to#running?
- Redefine
Mel::Progress::Report#running?
to mean the progress is started and is greater than zero
- Add
Mel::Progress::Report.new(Indexable)
overload
- Make task objects externally immutable
- Remove
Mel::Job::Template#run
- Remove
.redis_pool_size
setting
- Set default
.batch_size
to-100
- Increase default
.poll_interval
to 15 seconds
- Fix
Invalid Int32
error when tracking progress
- Upgrade
GrottoPress/pond
shard to v1.0 - Upgrade
jgaskins/redis
shard to v0.7
- Remove
luckyframework/habitat
dependency
- Use
WORKER_ID
environment variable as default.worker_id
setting
- Add
.error_handler
setting - Add
Mel::Progress::Report
- Make
Mel.start_async
methods available outside specs - Automatically stop Mel when program exits
- Return just the task ID (not the whole task) from
Mel::Job.run_*
methods - Make task objects externally immutable
- Remove
Mel::Progress#backward
- Remove
Mel::Progress#forward
- Remove
Mel::Progress#failure?
- Remove
Mel::Progress#moving?
- Remove
Mel::Progress#success?
- Remove
Mel::Progress.failure?(Number)
- Remove
Mel::Progress.moving?(Number)
- Remove
Mel::Progress.success?(Number)
- Remove
.rescue_errors
setting
- Switch to
luckyframework/habitat
for managing configuration - Make
Mel::State
enum public
- Ensure jobs cannot be mutated in cloned tasks
- Add
Mel::Task::Any
alias - Add
Mel::Progress.failure?(Number)
- Add
Mel::Progress.moving?(Number)
- Add
Mel::Progress.success?(Number)
- Upgrade
jgaskins/redis
shard to v0.6 - Make
Mel::Task#id
andMel::Task#job
read-only - Return the whole task (not just the
id
) fromMel::Job.run_*
methods
- Ensure support for Crystal v1.3.0
- Include only specific data in logs to avoid exposing sensitive data
- Add support for Crystal v1.2
- Add
redis_key_prefix
setting - Add
Mel.start_async(&)
spec helper
- Use
Mutex
when updating worker state
- Add
Mel::Progress#forward
for moving progress forward by a given value. - Add
Mel::Progress#backward
for moving progress backward by a given value. - Allow force-scheduling a job
- Add
rescue_errors
setting to optionally rescue exceptions
- Enable setting arbitrary schedule for any given schedule template
- Rename
Mel::Progress#track(value)
to#move
- Rename
Mel::Progress#tracking?
to#moving?
- Remove schedule templates
.run_*
macros
- Add progress tracker
- Add
Mel::Job#redis
- Move out worker-specific code into own files (enables
require "mel/worker"
). - Allow limiting the number of running tasks via the
batch_size
setting
- Remove
Mel::Job#run(&)
- Ensure tasks are never lost in the event of a force shutdown
- Ensure tasks run even if any callback raises an exception
- Add spec helpers
- Add support for Carbon mailer
- Add schedule templates
- Ensure running tasks complete if Mel stopped in main fiber
- Add support for bulk scheduling
- Add per task
retries
argument.
- Return
nil
for query methods returning empty collections - Pass status as argument to
after_*
callbacks.
- Ensure interval specified for periodic tasks cannot be negative
- Fix log settings not working
- Initial public release