Skip to content

Bump the mix-minor-and-patch group with 2 updates#7

Merged
andreogle merged 1 commit into
mainfrom
dependabot/hex/mix-minor-and-patch-02bab74179
May 29, 2026
Merged

Bump the mix-minor-and-patch group with 2 updates#7
andreogle merged 1 commit into
mainfrom
dependabot/hex/mix-minor-and-patch-02bab74179

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 28, 2026

Bumps the mix-minor-and-patch group with 2 updates: oban and swoosh.

Updates oban from 2.22.1 to 2.23.0

Release notes

Sourced from oban's releases.

v2.23.0

Sharpens resilience under database outages, catches misconfigured unique constraints at compile time, and optionally scopes telemetry logging to a single instance.

☣️ Compile-Time Unique State Checks

Explicit :states lists in unique options have been deprecated for a while, but they still appear in many applications. Two patterns silently break the uniqueness guarantee:

  • Lists that omit insert states (:scheduled and :available) fail to deduplicate on insert, so duplicates slip past unconditionally.
  • Partial lists like [:available, :executing, :scheduled] leave gaps in the lifecycle where duplicates land between states and break job staging.

Workers with these incomplete patterns now warn at compile time with guidance for how to repair the misconfiguration.

🪵 Resilient Retry Exhaustion

Autonomous processes (Pruner, Cron) rely on transactions with a retry behavior. A database outage that outlasts the retry time will crash the process, and trigger a restart loop that could bring down the whole supervision tree.

The Repo.transaction/3 function now accepts an :on_exhausted option that controls what happens when retries run out. The default preserves the existing raising behavior, while :log writes an error without crashing:

Oban.Repo.transaction(conf, fun, on_exhausted: :log)

Internal processes that shouldn't crash on a transient outage now use :log, so a sustained database hiccup is logged once rather than escalating.

🎯 Scoped Telemetry Logging

The telemetry backed default logger, enabled with attach_default_logger/1, now accepts an :oban_name option to restrict logs to a single instance.

Oban.Telemetry.attach_default_logger(oban_name: MyApp.Oban)

When set, multiple loggers can coexist without interleaving, and events from other instances are dropped before they reach the log. This is primarily useful in testing, where multiple Oban instances often run side by side and isolating the output of one of them is otherwise awkward.

v2.23.0

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.

... (truncated)

Changelog

Sourced from oban's changelog.

v2.23.0

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

... (truncated)

Commits
  • 9f57072 Release v2.23.0
  • 23fa817 Consolidate UDF retry in transaction/3
  • cefbe46 Add exhausted logging to Repo.transaction/3
  • 14312db Tighten fallthroughs in validation
  • 49d5cbe Prune unreachable branches in validation
  • d6e6703 Eliminate sonar prune flake from listener race
  • 9bb65ec Move lite engine cleanup out of case module
  • b90b16e Scope telemetry events in stager test
  • 7f74dc3 Jitter producer dispatch to prevent fetch stampede
  • f1798f2 Increase assert_receive timeout for all tests
  • Additional commits viewable in compare view

Updates swoosh from 1.25.2 to 1.25.3

Release notes

Sourced from swoosh's releases.

v1.25.3 🚀

📝 Documentation

🧰 Maintenance

New Contributors

Full Changelog: swoosh/swoosh@v1.25.2...1.25.3

Changelog

Sourced from swoosh's changelog.

1.25.3

📝 Documentation

🧰 Maintenance

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the mix-minor-and-patch group with 2 updates: [oban](https://github.com/oban-bg/oban) and [swoosh](https://github.com/swoosh/swoosh).


Updates `oban` from 2.22.1 to 2.23.0
- [Release notes](https://github.com/oban-bg/oban/releases)
- [Changelog](https://github.com/oban-bg/oban/blob/main/CHANGELOG.md)
- [Commits](oban-bg/oban@v2.22.1...v2.23.0)

Updates `swoosh` from 1.25.2 to 1.25.3
- [Release notes](https://github.com/swoosh/swoosh/releases)
- [Changelog](https://github.com/swoosh/swoosh/blob/main/CHANGELOG.md)
- [Commits](swoosh/swoosh@v1.25.2...1.25.3)

---
updated-dependencies:
- dependency-name: oban
  dependency-version: 2.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: mix-minor-and-patch
- dependency-name: swoosh
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mix-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file elixir Pull requests that update elixir code labels May 28, 2026
@andreogle andreogle merged commit 2c949e1 into main May 29, 2026
2 checks passed
@dependabot dependabot Bot deleted the dependabot/hex/mix-minor-and-patch-02bab74179 branch May 29, 2026 00:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file elixir Pull requests that update elixir code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant