diff --git a/CHANGELOG.md b/CHANGELOG.md index 87c94eaa2..73864e81b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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). @@ -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). diff --git a/cmd/river/go.mod b/cmd/river/go.mod index eef4ff398..a48366f11 100644 --- a/cmd/river/go.mod +++ b/cmd/river/go.mod @@ -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 diff --git a/conformance/go.mod b/conformance/go.mod index 3ee5d0458..981d7a657 100644 --- a/conformance/go.mod +++ b/conformance/go.mod @@ -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 diff --git a/go.mod b/go.mod index a045dd48b..38cff66a8 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/riverdriver/go.mod b/riverdriver/go.mod index 4ebfbf40e..8400e919a 100644 --- a/riverdriver/go.mod +++ b/riverdriver/go.mod @@ -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 ) diff --git a/riverdriver/riverdatabasesql/go.mod b/riverdriver/riverdatabasesql/go.mod index 9436df429..de8e50325 100644 --- a/riverdriver/riverdatabasesql/go.mod +++ b/riverdriver/riverdatabasesql/go.mod @@ -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 ) diff --git a/riverdriver/riverdrivertest/go.mod b/riverdriver/riverdrivertest/go.mod index 506711afc..1d8a77d78 100644 --- a/riverdriver/riverdrivertest/go.mod +++ b/riverdriver/riverdrivertest/go.mod @@ -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 diff --git a/riverdriver/riverpgxv5/go.mod b/riverdriver/riverpgxv5/go.mod index a18887ab6..217bea36c 100644 --- a/riverdriver/riverpgxv5/go.mod +++ b/riverdriver/riverpgxv5/go.mod @@ -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 ) diff --git a/riverdriver/riversqlite/go.mod b/riverdriver/riversqlite/go.mod index 3097de296..89e7b4a5c 100644 --- a/riverdriver/riversqlite/go.mod +++ b/riverdriver/riversqlite/go.mod @@ -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 ) diff --git a/rivershared/go.mod b/rivershared/go.mod index 279f3223b..deb7cabfa 100644 --- a/rivershared/go.mod +++ b/rivershared/go.mod @@ -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