Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.50.0] - 2026-10-26

### Changed

- **Breaking:** Resumable steps can no longer be nested. Calls fail before running child callbacks, preventing unreachable resume points and rolled-back parent checkpoints from being saved again. [PR #1534](https://github.com/riverqueue/river/pull/1534).
Expand All @@ -16,11 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Refresh a durable periodic job's saved row only after its next run time is loaded at startup or committed. When a startup write rolled back, keep-alive could revive an expired row, and the next leader enqueued every run since the row's old next run time. [PR #1540](https://github.com/riverqueue/river/pull/1540).
- Fail retries that omit a saved cursor-only step, while preserving their checkpoints for recovery. Jobs with an existing step marker retain their behavior, including legacy stale cursor entries. [PR #1534](https://github.com/riverqueue/river/pull/1534).

- Fixed SQLite metadata updates recursively merging nested objects and deleting keys set to JSON null. Updates now replace whole top-level values, matching Postgres and preventing completed resumable cursor steps from running again on later retries. [PR #1533](https://github.com/riverqueue/river/pull/1533).

- Fixed resumable transactional checkpoints being saved again after rollback or a failed write, and first-step cursors being lost on error, snooze, or cooperative shutdown. After a successful checkpoint write, the caller's transaction owns that progress; rollback may replay earlier unpersisted steps. The Rust, JavaScript, and Java runtimes now share the applicable behavior, including preserving progress on snooze.

- Fixed resumable transactional checkpoints being saved again after rollback or a failed write, and first-step cursors being lost on error, snooze, or cooperative shutdown. After a successful checkpoint write, the caller's transaction owns that progress; rollback may replay earlier unpersisted steps. The Rust, JavaScript, and Java runtimes now share the applicable behavior, including preserving progress on snooze. [PR #1521](https://github.com/riverqueue/river/pull/1521).
- Fixed `AddWorkerSafely` leaving a worker's primary kind and earlier aliases registered when a later kind alias conflicts with an existing registration. Failed registrations now leave the worker registry unchanged. [PR #1440](https://github.com/riverqueue/river/pull/1440).
- Fixed the notifier retrying without backoff and flooding logs when the context passed to `Client.Start` reaches its deadline. [PR #1495](https://github.com/riverqueue/river/pull/1495).
- Fixed `JobSnooze` accepting negative durations despite documenting that they panic. [PR #1529](https://github.com/riverqueue/river/pull/1529).
Expand Down
12 changes: 6 additions & 6 deletions cmd/river/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ toolchain go1.26.6
require (
github.com/jackc/pgx/v5 v5.11.0
github.com/lmittmann/tint v1.2.1
github.com/riverqueue/river v0.49.0
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.49.0
github.com/riverqueue/river/riverdriver/riversqlite v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river v0.50.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.50.0
github.com/riverqueue/river/riverdriver/riversqlite v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/spf13/cobra v1.10.2
github.com/stretchr/testify v1.12.1
modernc.org/sqlite v1.61.0
Expand Down
8 changes: 4 additions & 4 deletions conformance/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ go 1.26.0
toolchain go1.26.6

require (
github.com/riverqueue/river v0.49.0
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river v0.50.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/robfig/cron/v3 v3.0.1
github.com/stretchr/testify v1.12.1
golang.org/x/mod v0.42.0
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ require (
github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438
github.com/jackc/pgx/v5 v5.11.0
github.com/jackc/puddle/v2 v2.2.3
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/robfig/cron/v3 v3.0.1
github.com/stretchr/testify v1.12.1
github.com/tidwall/gjson v1.20.0
Expand Down
2 changes: 1 addition & 1 deletion riverdriver/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.26.0
toolchain go1.26.6

require (
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
)

Expand Down
10 changes: 5 additions & 5 deletions riverdriver/riverdatabasesql/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ toolchain go1.26.6
require (
github.com/jackc/pgx/v5 v5.11.0
github.com/lib/pq v1.12.3
github.com/riverqueue/river v0.49.0
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river v0.50.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
)

Expand Down
14 changes: 7 additions & 7 deletions riverdriver/riverdrivertest/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ require (
github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438
github.com/jackc/pgx/v5 v5.11.0
github.com/lib/pq v1.12.3
github.com/riverqueue/river v0.49.0
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/riverdriver/riverdatabasesql v0.49.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.49.0
github.com/riverqueue/river/riverdriver/riversqlite v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river v0.50.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/riverdriver/riverdatabasesql v0.50.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.50.0
github.com/riverqueue/river/riverdriver/riversqlite v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
github.com/tidwall/gjson v1.20.0
github.com/tidwall/sjson v1.2.5
Expand Down
6 changes: 3 additions & 3 deletions riverdriver/riverpgxv5/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ toolchain go1.26.6
require (
github.com/jackc/pgx/v5 v5.11.0
github.com/jackc/puddle/v2 v2.2.3
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
)

Expand Down
6 changes: 3 additions & 3 deletions riverdriver/riversqlite/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ go 1.26.0
toolchain go1.26.6

require (
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/rivershared v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/rivershared v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
)

Expand Down
8 changes: 4 additions & 4 deletions rivershared/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ toolchain go1.26.6

require (
github.com/jackc/pgx/v5 v5.11.0
github.com/riverqueue/river v0.49.0
github.com/riverqueue/river/riverdriver v0.49.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.49.0
github.com/riverqueue/river/rivertype v0.49.0
github.com/riverqueue/river v0.50.0
github.com/riverqueue/river/riverdriver v0.50.0
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.50.0
github.com/riverqueue/river/rivertype v0.50.0
github.com/stretchr/testify v1.12.1
github.com/tidwall/gjson v1.20.0
go.uber.org/goleak v1.3.0
Expand Down
Loading