Skip to content

chore(deps): update dependency oban to v2.23.0 - autoclosed#8

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/oban-2.x
Closed

chore(deps): update dependency oban to v2.23.0 - autoclosed#8
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/oban-2.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 28, 2026

This PR contains the following updates:

Package Type Update Change
oban (source) prod minor == 2.22.1== 2.23.0

Release Notes

oban-bg/oban (oban)

v2.23.0

Compare Source

Enhancements
  • [Job] Warn when unique :states leave lifecycle gaps

    Explicit :states lists are deprecated, but still exist in many applications. Lists that omit
    insert states like :scheduled, or :available silently fail to prevent duplicates at all.

    Partial state lists like [:available, :executing, :scheduled] leave gaps in the lifecycle
    where 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 :DOWN messages it was waiting for and sent unnecessary
    messages. The producer now pushes a single message the moment running empties.

  • [Telemetry] Optionally scope the logging to a single instance

    Add an :oban_name option to attach_default_logger/1 and detach_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/3

    Intermittent queries ran by autonomous processes like Pruner would crash and enter a restart
    loop when the database was unavailable longer than the retry budget. Under a sustained outage
    that could be enough to crash the entire supervision tree.

    A new :on_exhausted retry option now accepts :raise (the default) and :log, to output an
    error log rather than raising.

Bug Fixes
  • [Config] Break extra compile cycle by deferring default modules

    Reference default modules from Config.new/1 rather than as defstruct defaults. Inline module
    references in struct defaults created compile-time edges to modules that alias Config. That
    pulls 24 interconnected modules into a compile cycle.

  • [Errors] Extract Oban.Errors to prevent circular compile cycle

    A circular chain existed between backoff -> exceptions -> job -> worker, which caused an extra
    compilation cycle.

  • [Repo] Consolidate UndefinedFunctionError retry in transaction/3

    Move UndefinedFunctionError retry into transaction/3's rescue alongside database errors so
    retry, backoff, and :on_exhausted semantics apply uniformly.

  • [Repo] Retry MyXQL deadlock and lock-wait-timeout errors

    Treat the MyXQL error codes 1213 (deadlock) and 1205 (lock wait timeout) as expected
    conflicts 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 * * * 1 resolve in a handful of steps instead of thousands.

  • [Producer] Ignore stray :DOWN messages for released refs

    When a job's task finishes successfully its ref is demonitored, but a late :DOWN can still
    arrive 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 the oban_jobs
    table 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? and get_leader callbacks were declared at arity 1, but they're always invoked as
    arity 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?/2 and get_leader/2 so 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 :ok catch-all are
    properly rejected.


Configuration

📅 Schedule: (in timezone Europe/Rome)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

masterkain added a commit that referenced this pull request May 28, 2026
@renovate renovate Bot changed the title chore(deps): update dependency oban to v2.23.0 chore(deps): update dependency oban to v2.23.0 - autoclosed May 28, 2026
@renovate renovate Bot closed this May 28, 2026
@renovate renovate Bot deleted the renovate/oban-2.x branch May 28, 2026 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants