Skip to content

chore(deps): bump oban from 2.23.1 to 2.24.0 - #211

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/hex/oban-2.24.0
Open

chore(deps): bump oban from 2.23.1 to 2.24.0#211
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/hex/oban-2.24.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 29, 2026

Copy link
Copy Markdown

Bumps oban from 2.23.1 to 2.24.0.

Release notes

Sourced from oban's releases.

v2.24.0

This release unifies configuration for queues, repos, and services, swaps opaque timing integers for readable durations, and backports per-entry cron timezones and attempt-preserving snoozes from Oban Pro.

⚙️ Unified Service Configuration

Configuration for queues, repos, and all services (formerly "plugins") is now entirely unified. This is a massive syntactic change, but it isn't all sugar. There's purpose behind the unification and the configuration hoisting.

Functionality like pruning jobs and rescuing orphaned jobs is essential to running Oban, and it shouldn't be an optional afterthought that's demoted as a "plugin" and buried in a guide. Now services are top level configuration just like the engine, notifier, and peer:

config :my_app, Oban,
  cron: [crontab: [{"0 2 * * *", MyApp.Nightly}]],
  pruner: [max_age: {7, :days}],
  lifeline: [rescue_after: {30, :minutes}],
  reindexer: Oban.Reindexer,
  ...

This configuration style should look familiar to anybody using oban-py. Building it is where we realized that these services are core functionality (in fact, it doesn't even have plugins).

Service module names are flatter as well. Since they're not considered plugins anymore, the Plugin namespace was a confusing misnomer—so Oban.Plugins.Cron is simply Oban.Cron, Oban.Plugins.Pruner is now Oban.Pruner, and so on.

Along with keyword options, the unified syntax supports bare modules, {module, opts} tuples, and disabling functionality altogether by passing false. The tuple variant makes it especially easy to swap core services out for alternatives (particularly useful for Pro 😉):

config :my_app, Oban,
+ engine: Oban.Pro.Engine,
- cron: {Oban.Cron, crontab: [...]},
+ cron: {Oban.Pro.Cron, crontab: [...]},
- lifeline: Oban.Lifeline,
+ lifeline: Oban.Pro.Lifeline,
- pruner: {Oban.Pruner, ...},
+ pruner: {Oban.Pro.Pruner, ...},
- queues: [...]
+ queues: {Oban.Pro.Queues, queues: [...]}

You'll see more about that in the Pro v1.8 release as well.

Finally, the repo option got the same treatment. Both log and get_dynamic_repo were really repo options, and the stand-alone log option was genuinely confusing. Now you can use the tuple format to pass those options through :repo directly:

repo: {MyApp.Repo, log: false, dynamic_repo: fn -> MyApp.Repo end}

Don't worry, these changes are fully backward compatible. Oban transparently rewrites older configuration formats into the correct format, all of the old plugin modules have backward compatible shims, and you can still provide plugins beyond the standard services.

🎁 Backports from Oban Pro

... (truncated)

Changelog

Sourced from oban's changelog.

v2.24.0 - 2026-08-25

Changes

  • [Oban] Top-level config for maintenance plugins

    Promote the common maintenance plugins to first-class configuration keys: cron, pruner, lifeline, and reindexer. Each desugars into a standard plugin entry and accepts the same forms used elsewhere in Oban:

    config :my_app, Oban,
      cron: [crontab: [{"0 2 * * *", MyApp.Nightly}]],
      pruner: [max_age: 60 * 60 * 24 * 7]
    

    A keyword list configures the default plugin, and a module or {module, opts} tuple can configure an alternative (making it an easy switch for Oban Pro, e.g. lifeline: Oban.Pro.Lifeline).

  • [Oban] Accept repo options through {repo, opts} tuple

    Configure repo-level options like logging and dynamic repo directly on the :repo key instead of at the top level:

    repo: {MyApp.Repo, log: false, dynamic_repo: fn -> MyApp.Repo end}
    

    The top-level log and get_dynamic_repo keys are soft-deprecated. They continue to work for backward compatibility, but the tuple form is now preferred and documented, keeping repo concerns grouped with the repo.

  • [Oban] Accept a module for the top-level :queues option

    The :queues option now accepts a {module, options} tuple in addition to a static keyword list, which hands queue management to an alternative implementation such as Oban Pro's Queues:

    queues: {Oban.Pro.Queues, queues: [default: 10]}
    

    The module is started as a plugin and controls which queues run, while a static keyword list keeps the built-in behavior of starting the listed queues on init. Queues run regardless of the :plugins setting in either form.

    Setting plugins: false now disables plugins configured through top-level servic keys, e.g. :cron or :pruner, rather than crashing during normalization.

  • [Oban] Rename maintenance plugins to top-level modules

    Plugins configured through top-level service keys now live directly in the Oban namespace:

    Oban.Plugins.Cron      -> Oban.Cron
    Oban.Plugins.Lifeline  -> Oban.Lifeline
    Oban.Plugins.Pruner    -> Oban.Pruner
    

... (truncated)

Commits
  • a315b6d Release v2.24
  • 2939e31 Restrict unique warning to insert states only
  • e7b8480 Hoist query imports to module level
  • 82362be Normalize plugin telemetry metadata errors
  • 7d52f9c Add dispatch cooldown tweaking to troubleshooting
  • b48d519 Roll back attempt and count snoozes on snooze
  • 47bb8b2 Support per-entry timezones in the crontab
  • 150c66f Expose stager as a top-level service option
  • 4952572 Return :ok from reindexer without leadership
  • 0ac7cbf Bump the production-dependencies group with 2 updates (#1492)
  • Additional commits viewable in compare view

Dependabot compatibility score

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 this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [oban](https://github.com/oban-bg/oban) from 2.23.1 to 2.24.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.23.1...v2.24.0)

---
updated-dependencies:
- dependency-name: oban
  dependency-version: 2.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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 Aug 29, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

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.

0 participants