Skip to content

Commit fb07db6

Browse files
committed
Release v2.17.11
1 parent 0b2a72d commit fb07db6

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,54 @@ args
7474
|> Oban.insert()
7575
```
7676

77+
## v2.17.11 — 2024-06-25
78+
79+
### Bug Fixes
80+
81+
- [Oban] Handle deprecation warnings from Elixir 1.17
82+
83+
- [Notifier] Prevent noisy logging about switching between modes.
84+
85+
There's an apparent race condition in Sonar between pruning stale nodes on `:ping` and updating
86+
the status after a notification. This primarily happens in development for two reasons:
87+
88+
1. Development laptops are most prone to time warp because of system sleep.
89+
2. Apps only run a single node in development.
90+
91+
Using `monotonic_time/1` instead of `system_time/1` guards against clock drift/time warp
92+
effects.
93+
94+
- [Stager] Prevent notification status timeouts from bubbling into the Stager.
95+
96+
A clogged Ecto pool could cause cascading errors on startup due to a sequence of calls between
97+
the `Notifier`, `Sonar`, and `Stager`.
98+
99+
1. `Sonar` sends a notification in `handle_continue` on startup.
100+
2. The notification is blocked while the `Notifier` waits for a connection from the Ecto pool.
101+
3. `Stager` checks for the connection status on startup, which would eventually time out because
102+
the `Sonar` hadn't finished initializing.
103+
4. The `Stager` crashes from the timeout error.
104+
105+
This makes the following changes to prevent this sequence of events:
106+
107+
1. The `Stager` no longer gets the sonar status during startup.
108+
2. The `Notifier` catches timeout errors from `Sonar` checks, warns about it, then returns an
109+
`:unknown` status.
110+
111+
- [Engine] Defensively check the process dictionary during inline testing.
112+
113+
Not all processes are guaranteed to return a value for the process dictionary. Sometimes a value
114+
was missing during inline testing, which would crash the test.
115+
116+
- [Basic] Set `conflict?` flag when encountering a unique advisory lock.
117+
118+
The `conflict?` flag wasn't set when inserting a unique job was blocked by an advisory lock. Now
119+
the flag is set on either a fetched duplicate, or when the advisory lock is set.
120+
121+
- [Job] Correct `replace_by_state_option` type by switching from keyword to tuples.
122+
123+
- [Config] Correctly type `shutdown_grace_period` as an `integer` rather than a `timeout`.
124+
77125
## v2.17.10 — 2024-04-26
78126

79127
### Enhancements

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ defmodule Oban.MixProject do
22
use Mix.Project
33

44
@source_url "https://github.com/sorentwo/oban"
5-
@version "2.17.10"
5+
@version "2.17.11"
66

77
def project do
88
[

0 commit comments

Comments
 (0)