chore(deps): update dependency oban to v2.23.0 - autoclosed#8
Closed
renovate[bot] wants to merge 1 commit into
Closed
chore(deps): update dependency oban to v2.23.0 - autoclosed#8renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
masterkain
added a commit
that referenced
this pull request
May 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
== 2.22.1→== 2.23.0Release Notes
oban-bg/oban (oban)
v2.23.0Compare Source
Enhancements
[Job] Warn when unique :states leave lifecycle gaps
Explicit
:stateslists are deprecated, but still exist in many applications. Lists that omitinsert states like
:scheduled, or:availablesilently fail to prevent duplicates at all.Partial state lists like
[:available, :executing, :scheduled]leave gaps in the lifecyclewhere duplicates slip through or clog job staging.
Workers defined with these patterns now warn at compile time with recommended changes for
missing insert states or partial states.
[Producer] Jitter producer dispatch to prevent fetch conflicts
Producers now apply jitter to the cooldown period between fetches. Without jitter, producers
across nodes could synchronize on shared signals and stampede the database with simultaneous
fetches.
The configured cooldown is now the average wait rather than the minimum, with actual delays
varying between roughly 1ms and 2x the configured value. For example, the default 5ms cooldown
will range from 1ms to 10ms.
[Oban] Tune restart intensity to tolerate queue crashes
The top level queue supervisor used the default restart strategy, so a single misbehaving queue
exceeding that budget could crash every other queue alongside it. This increases the budget to
20 restarts in 60 seconds so that an isolated queue fault stays isolated for longer.
[Producer] Replace drain polling with a pushed signal
During queue shutdown, queues polled every 10ms until all jobs were finished. That competed for
the producer's mailbox with the
:DOWNmessages it was waiting for and sent unnecessarymessages. The producer now pushes a single message the moment running empties.
[Telemetry] Optionally scope the logging to a single instance
Add an
:oban_nameoption toattach_default_logger/1anddetach_default_logger/1. When set,multiple scoped loggers can coexist, and events from other instances are filtered out by
matching the instance name. This is primarily useful for testing environments.
[Repo] Add exhausted logging to
transaction/3Intermittent queries ran by autonomous processes like
Prunerwould crash and enter a restartloop when the database was unavailable longer than the
retrybudget. Under a sustained outagethat could be enough to crash the entire supervision tree.
A new
:on_exhaustedretry option now accepts:raise(the default) and:log, to output anerror log rather than raising.
Bug Fixes
[Config] Break extra compile cycle by deferring default modules
Reference default modules from
Config.new/1rather than as defstruct defaults. Inline modulereferences in struct defaults created compile-time edges to modules that alias
Config. Thatpulls 24 interconnected modules into a compile cycle.
[Errors] Extract
Oban.Errorsto prevent circular compile cycleA circular chain existed between backoff -> exceptions -> job -> worker, which caused an extra
compilation cycle.
[Repo] Consolidate
UndefinedFunctionErrorretry intransaction/3Move UndefinedFunctionError retry into
transaction/3's rescue alongside database errors soretry, backoff, and
:on_exhaustedsemantics apply uniformly.[Repo] Retry
MyXQLdeadlockandlock-wait-timeouterrorsTreat the MyXQL error codes
1213 (deadlock)and1205 (lock wait timeout)as expectedconflicts so transactions retry on the "fast path". Previously, only Postgres conflicts
qualified, so MySQL deadlocks fell through to the slow unexpected-error retry.
[Cron] Skip ahead by a full day on weekday mismatch
This is a performance enhancement for expressions that use specific weekdays. Resolution
previously advanced by minute through every hour of every intervening day before reaching the
next valid weekday. They now jump directly to the next matching day, making expressions like
*/5 * * * 1resolve in a handful of steps instead of thousands.[Producer] Ignore stray
:DOWNmessages for released refsWhen a job's task finishes successfully its
refis demonitored, but a late:DOWNcan stillarrive if the message was sitting in the mailbox before demonitor ran.
Now the down handler clause is guarded so the producer survives.
[Migration] Tolerate non-numeric migration versions
Custom migrators, like Oban Pro's
DynamicPartitioner, record a comment on theoban_jobstable to indicate the version is managed externally. Parsing that as an integer crashed
application startup during validation in testing modes.
[Peer] Update callback arities to match actual call sites
The
leader?andget_leadercallbacks were declared at arity 1, but they're always invoked asarity 2 with a timeout. Implementing the documented arity wasn't viable, and mocking libraries
like Mox couldn't generate a usable mock.
Correct the callback specs to
leader?/2andget_leader/2so the behaviour matches reality.[Validator] Tighten fallthroughs in validation
Each type clause now matches the success case positively and falls to an explicit error clause,
so values that previously slipped past a negative guard and into the
:okcatch-all areproperly rejected.
Configuration
📅 Schedule: (in timezone Europe/Rome)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.