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
10 changes: 4 additions & 6 deletions ruby/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.14.0] - 2026-10-26

### Added

- Receive Postgres and SQLite notifications for insertions, queue controls, cancellation, and leadership handoffs, with reconnect recovery and a `poll_only` option. [PR #1496](https://github.com/riverqueue/river/pull/1496).
Expand All @@ -22,13 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- The scheduler no longer opens a savepoint for each due job to catch unique key conflicts. A pass that made more than 64 jobs available overflowed the Postgres subtransaction cache, which can slow queries across the server. The scheduler now finds conflicts with one statement on Postgres and checks before each write on SQLite. Conflicting jobs are still discarded with `unique_key_conflict: scheduler_discarded` metadata. On Postgres, the scheduler now waits for a due job that another transaction has locked, instead of skipping it. [PR #1544](https://github.com/riverqueue/river/pull/1544).

- Default periodic jobs to their occurrence time, preserving constructor and argument-level schedules. [PR #1537](https://github.com/riverqueue/river/pull/1537).

- 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).

- Support large SQLite metadata updates without reaching the expression-depth limit, preserving top-level replacement and JSON null values. [PR #1533](https://github.com/riverqueue/river/pull/1533).

- A `River::Config` without an explicit `id:` generates its default client ID on first use in each process, so clients built before a fork (as with preloading Puma, Unicorn, or Pitchfork servers) no longer share one ID across forked workers. Explicit IDs are unchanged, and `Config#with` copies share the original's ID. [PR #1498](https://github.com/riverqueue/river/pull/1498).
- Inserting a job stores its encoded args as given instead of decoding and re-encoding them in Ruby, which rewrote numbers like `1.10` as `1.1` and `1e3` as `1000.0` and rounded digits beyond `Float` precision. Postgres applies its usual `jsonb` normalization, and SQLite keeps the encoded bytes, matching River's Go drivers. Affects Active Record on Postgres and SQLite, and Sequel on SQLite. [PR #1503](https://github.com/riverqueue/river/pull/1503).
- Wake workers when scheduled jobs become available or jobs are manually retried, including workers in other clients. [PR #1496](https://github.com/riverqueue/river/pull/1496).
Expand Down Expand Up @@ -158,7 +156,7 @@ Users should upgrade backends to River v0.12.0 before upgrading this library in

This updated implementation is significantly faster due to the removal of advisory locks in favor of an index-backed uniqueness system, while allowing some flexibility in which job states are considered. However, not all states may be removed from consideration when using the `by_state` option; pending, scheduled, available, and running states are required whenever customizing this list. [PR #32](https://github.com/riverqueue/riverqueue-ruby/pull/32).

- Update REXML dependency. [PR #28](https://github.com/riverqueue/riverqueue-ruby/pull/36).
- Update REXML dependency. [PR #36](https://github.com/riverqueue/riverqueue-ruby/pull/36).

## [0.7.0] - 2024-08-30

Expand All @@ -183,7 +181,7 @@ Users should upgrade backends to River v0.12.0 before upgrading this library in
### Changed

- Tag format is now checked on insert. Tags should be no more than 255 characters and match the regex `/\A[\w][\w\-]+[\w]\z/`. [PR #22](https://github.com/riverqueue/riverqueue-ruby/pull/22).
- Returned jobs now have a `metadata` property. [PR #21](https://github.com/riverqueue/riverqueue-ruby/pull/22).
- Returned jobs now have a `metadata` property. [PR #22](https://github.com/riverqueue/riverqueue-ruby/pull/22).

## [0.4.0] - 2024-04-28

Expand Down
10 changes: 5 additions & 5 deletions ruby/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
riverqueue (0.13.0)
riverqueue (0.14.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,16 +10,16 @@ PATH
PATH
remote: driver/riverqueue-activerecord
specs:
riverqueue-activerecord (0.13.0)
riverqueue-activerecord (0.14.0)
activerecord (>= 7.2, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.13.0)
riverqueue (= 0.14.0)

PATH
remote: driver/riverqueue-sequel
specs:
riverqueue-sequel (0.13.0)
riverqueue (= 0.13.0)
riverqueue-sequel (0.14.0)
riverqueue (= 0.14.0)
sequel (>= 5.20, < 1000)

GEM
Expand Down
6 changes: 3 additions & 3 deletions ruby/driver/riverqueue-activerecord/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ../..
specs:
riverqueue (0.13.0)
riverqueue (0.14.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,10 +10,10 @@ PATH
PATH
remote: .
specs:
riverqueue-activerecord (0.13.0)
riverqueue-activerecord (0.14.0)
activerecord (>= 7.2, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.13.0)
riverqueue (= 0.14.0)

GEM
remote: https://rubygems.org/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-activerecord"
s.version = "0.13.0"
s.version = "0.14.0"
s.summary = "ActiveRecord Postgres and SQLite driver for the River Ruby gem."
s.description = "ActiveRecord Postgres and SQLite driver for inserting and working River jobs in Ruby."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
6 changes: 3 additions & 3 deletions ruby/driver/riverqueue-sequel/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ../..
specs:
riverqueue (0.13.0)
riverqueue (0.14.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,8 +10,8 @@ PATH
PATH
remote: .
specs:
riverqueue-sequel (0.13.0)
riverqueue (= 0.13.0)
riverqueue-sequel (0.14.0)
riverqueue (= 0.14.0)
sequel (>= 5.20, < 1000)

GEM
Expand Down
2 changes: 1 addition & 1 deletion ruby/driver/riverqueue-sequel/riverqueue-sequel.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-sequel"
s.version = "0.13.0"
s.version = "0.14.0"
s.summary = "Sequel Postgres and SQLite driver for the River Ruby gem."
s.description = "Sequel Postgres and SQLite driver for inserting and working River jobs in Ruby."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
16 changes: 8 additions & 8 deletions ruby/rails/riverqueue-rails/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
PATH
remote: ../../driver/riverqueue-activerecord
specs:
riverqueue-activerecord (0.13.0)
riverqueue-activerecord (0.14.0)
activerecord (>= 7.2, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.13.0)
riverqueue (= 0.14.0)

PATH
remote: ../..
specs:
riverqueue (0.13.0)
riverqueue (0.14.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -18,10 +18,10 @@ PATH
PATH
remote: .
specs:
riverqueue-rails (0.13.0)
riverqueue-rails (0.14.0)
activejob (>= 7.2, < 8.2)
railties (>= 7.2, < 8.2)
riverqueue-activerecord (= 0.13.0)
riverqueue-activerecord (= 0.14.0)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -343,9 +343,9 @@ CHECKSUMS
rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d
riverqueue (0.13.0)
riverqueue-activerecord (0.13.0)
riverqueue-rails (0.13.0)
riverqueue (0.14.0)
riverqueue-activerecord (0.14.0)
riverqueue-rails (0.14.0)
rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
Expand Down
2 changes: 1 addition & 1 deletion ruby/rails/riverqueue-rails/riverqueue-rails.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-rails"
s.version = "0.13.0"
s.version = "0.14.0"
s.summary = "Active Job and Rails integration for River."
s.authors = ["Blake Gentry", "Brandur Leach"]
s.files = Dir.glob("lib/**/*") + ["README.md"]
Expand Down
2 changes: 1 addition & 1 deletion ruby/riverqueue.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue"
s.version = "0.13.0"
s.version = "0.14.0"
s.summary = "A fast, reliable job queue for Ruby backed by Postgres or SQLite."
s.description = "Insert and work River jobs in Ruby using the same schema and state machine as other River clients. Use with riverqueue-activerecord or riverqueue-sequel."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
Loading