Changelog History
Page 1
-
v1.4.5 Changes
September 18, 2019✨ Enhancements
- Return {:error, reason} tuple for Honeydew.start_queue/2 + start_workers/3. Thanks @hauleth!
-
v1.4.4 Changes
August 01, 2019🐛 Bug Fixes
- 👷 Job results are now correctly passed to Success Modes
-
v1.4.3 Changes
June 10, 2019✨ Enhancements
- 👌 Support for compound primary keys in ecto tables.
🐛 Bug Fixes
- No longer assumes that ecto tables have a single primary key named
id
-
v1.4.2 Changes
June 07, 2019🐛 Bug Fixes
- Don't ignore mnesia table options provided by the user. Thanks @X4lldux!
-
v1.4.1 Changes
May 09, 2019✨ Enhancements
- 👷 Job execution filtering for Ecto Poll Queue with
:run_if
option, taking a boolean SQL fragment - ➕ Adding
:timeout
option toHoneydew.status/2
- 👷 Job execution filtering for Ecto Poll Queue with
-
v1.4.0 Changes
April 08, 2019✨ Enhancements
- 👷 Delayed Jobs
You may now pass the
:delay_secs
argument toasync/3
to execute a job when the given number of seconds has passed.See the Delayed Job Example
Queue Support: -
Mnesia
Fully supported, uses the system's montonic clock. It's recommended to use [Multi Time Warp Mode](http://erlang.org/doc/apps/erts/time_correction.html#multi-time-warp-mode), to prevent the monotonic clock from freezing for extended periods during a time correction, with `--erl "+C multi_time_warp"`. - `EctoPollQueue` Unsupported, since the Ecto queue doesn't use `async/3`. However, delayed retries are supported. It's technically feasible to delay Ecto jobs. As Honeydew wants nothing to do with your model's insertion transaction (to limit its impact on your application), its job ordering is handled by default values in the migration. In order to delay Ecto jobs, you'll need to manually add a number of milliseconds to the `DEFAULT` value of honeydew's lock field in your insertion transaction. - `ErlangQueue` Unsupported, pending a move to a priority queue. See "Breaking Changes" below to use delayed jobs with an in-memory queue.
- Exponential Retry (backoff)
Honeydew now supports exponential retries with the
ExponentialRetry
failure mode. You can optionally set the exponential base with the:base
option, the default is2
.See the Exponential Retry example and docs
- Customizable Retry Strategies
The
Retry
failure mode is now far more customizable, you can provide your own function to determine if, and when, you want to retry the job (by returning either{:cont, state, delay_secs}
or:halt
).See the Exponential Retry Implementation and docs
💥 Breaking Changes
[Mnesia] The schema for the Mnesia queue has been simplified to allow for new features and future backward compatibility. Unfortuntaely, this change itself isn't backward compatible. You'll need to drain your queues and delete your on-disk mnesia schema files (
Mnesia.*
), if you're using:on_disc
, before upgrading and restarting your queues.[Mnesia] The arguments for the Mnesia queue have been simplified, you no longer need to explicitly provide a separate list of nodes, simply provide the standard mnesia persistence arguments:
:ram_copies
,:disc_copies
and:disc_only_copies
.
See the Mnesia Example
- 0️⃣ [ErlangQueue] The in-memory ErlangQueue is no longer the default queue, since it doesn't currently
support delayed jobs. If you still want to use it, you'll need to explicitly ask for it when starting
your queue, with the
:queue
argument. Instead, the default queue is now an Mnesia queue using:ram_copies
and the:ets
access mode.
-
v1.3.0 Changes
February 13, 2019✨ Enhancements
- 👍 Ecto 3 support
-
v1.2.7 Changes
January 08, 2019✨ Enhancements
- ➕ Adding table prefixes to Ecto Poll Queue (thanks @jfornoff!)
-
v1.2.6 Changes
September 19, 2018✨ Enhancements
- 📇 Honeydew crash log statements now include the following metadata
:honeydew_crash_reason
and:honeydew_job
. These metadata entries can be used for building a LoggerBackend that could forward failures to an error logger integration like Honeybadger or Bugsnag.
- 📇 Honeydew crash log statements now include the following metadata
-
v1.2.5 Changes
August 24, 2018🐛 Bug fixes
- 👷 Don't restart workers when linked process terminates normally