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
2 changes: 2 additions & 0 deletions java/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.3.0] - 2026-11-02

### Added

- **Breaking:** Added `client.jobs()` for job reads, cancellation, completion, deletion, retries, and updates, removing the corresponding flat `Client` methods. Insertions remain on `Client`. [PR #1569](https://github.com/riverqueue/river/pull/1569).
Expand Down
8 changes: 4 additions & 4 deletions java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ retry, or work them using the same database.

## Installation

Java 21 or newer is required. Add `com.riverqueue:river:0.2.0` and a JDBC driver to your application's dependencies. Jackson 3 is included transitively.
Java 21 or newer is required. Add `com.riverqueue:river:0.3.0` and a JDBC driver to your application's dependencies. Jackson 3 is included transitively.

```xml
<repositories>
Expand All @@ -21,7 +21,7 @@ Java 21 or newer is required. Add `com.riverqueue:river:0.2.0` and a JDBC driver
<dependency>
<groupId>com.riverqueue</groupId>
<artifactId>river</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
Expand Down Expand Up @@ -96,7 +96,7 @@ jbang app install --name river-java --java 21 \
--java-options=--enable-native-access=ALL-UNNAMED \
--repos https://riverqueue.com/maven --repos central \
--main com.riverqueue.cli.MigrationCli \
com.riverqueue:river-cli:0.2.0
com.riverqueue:river-cli:0.3.0
export PATH="$HOME/.jbang/bin:$PATH"
export DATABASE_URL=postgres://localhost/myapp
# For SQLite: export DATABASE_URL=jdbc:sqlite:/absolute/path/myapp.db
Expand Down Expand Up @@ -162,7 +162,7 @@ cat > pom.xml <<'EOF'
<modelVersion>4.0.0</modelVersion>
<groupId>local</groupId><artifactId>river-cli-install</artifactId><version>1</version>
<repositories><repository><id>river</id><url>https://riverqueue.com/maven</url></repository></repositories>
<dependencies><dependency><groupId>com.riverqueue</groupId><artifactId>river-cli</artifactId><version>0.2.0</version></dependency></dependencies>
<dependencies><dependency><groupId>com.riverqueue</groupId><artifactId>river-cli</artifactId><version>0.3.0</version></dependency></dependencies>
</project>
EOF
mvn --batch-mode --no-transfer-progress \
Expand Down
6 changes: 3 additions & 3 deletions java/cli/pom.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.2.0</version><relativePath>../pom.xml</relativePath></parent>
<artifactId>river-cli</artifactId><version>0.2.0</version>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.3.0</version><relativePath>../pom.xml</relativePath></parent>
<artifactId>river-cli</artifactId><version>0.3.0</version>
<name>River Java migration CLI</name>
<description>Executable database migration tool for River on Postgres and SQLite</description>
<dependencies>
<dependency><groupId>com.riverqueue</groupId><artifactId>river</artifactId><version>0.2.0</version></dependency>
<dependency><groupId>com.riverqueue</groupId><artifactId>river</artifactId><version>0.3.0</version></dependency>
<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency>
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId></dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><scope>test</scope></dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ private String command(boolean executableJar, String... args) throws Exception {
@ParameterizedTest
@ValueSource(booleans = {false, true})
void thinJarRunsWithRuntimeDependencies(boolean executableJar) throws Exception {
assertEquals("river 0.2.0", command(executableJar, "--version").strip());
assertEquals("river 0.3.0", command(executableJar, "--version").strip());
assertTrue(command(executableJar, "migrate-up").contains("008 [up]"));
assertTrue(command(executableJar, "migrate-list").contains("applied"));
assertTrue(
Expand Down
4 changes: 2 additions & 2 deletions java/conformance/bin/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
with (artifacts.parent / "build.lock").open("w") as lock:
fcntl.flock(lock, fcntl.LOCK_EX)
subprocess.run(["mvn", "-q", "-f", str(root / "pom.xml"), "package", "-DskipTests"], check=True)
jar = root / "conformance/target/river-conformance-0.2.0.jar"
jar = root / "conformance/target/river-conformance-0.3.0.jar"
# A stale shaded jar can otherwise silently retain an older dependency's classes.
with zipfile.ZipFile(root / "river/target/river-0.2.0.jar") as library, zipfile.ZipFile(jar) as bundled:
with zipfile.ZipFile(root / "river/target/river-0.3.0.jar") as library, zipfile.ZipFile(jar) as bundled:
for entry in library.namelist():
if entry.startswith("com/riverqueue/") and not entry.endswith("/"):
if library.read(entry) != bundled.read(entry):
Expand Down
2 changes: 1 addition & 1 deletion java/conformance/bin/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def main():
manifest_path = reference / "conformance/manifest.json"
manifest = json.loads(manifest_path.read_text())
manifest["implementations"]["java"] = {
"package": "com.riverqueue:river", "registry": "maven", "version": "0.2.0"
"package": "com.riverqueue:river", "registry": "maven", "version": "0.3.0"
}
manifest_path.write_text(json.dumps(manifest, indent=2) + "\n")
environment = os.environ | {
Expand Down
2 changes: 1 addition & 1 deletion java/conformance/candidate.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"postgres-full-v1",
"sqlite-runtime-v1"
],
"version": "0.2.0",
"version": "0.3.0",
"start_options": [
"elect_interval_ms",
"rescuer_interval_ms",
Expand Down
2 changes: 1 addition & 1 deletion java/conformance/pom.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.2.0</version></parent>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.3.0</version></parent>
<artifactId>river-conformance</artifactId>
<!-- This is a development adapter, not a publishable River artifact. -->
<properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ private JsonNode handle(String method, JsonNode params, String rawParams) throws
database.dialect() == Database.Dialect.POSTGRES ? "postgres" : "sqlite"),
Map.entry("capabilities", capabilities),
Map.entry("implementation", "java"),
Map.entry("implementation_version", "0.2.0"),
Map.entry("implementation_version", "0.3.0"),
Map.entry("methods", methods),
Map.entry("migration_lines", Map.of("main", 8)),
Map.entry("profile", profile),
Expand Down
2 changes: 1 addition & 1 deletion java/conformance/src/main/resources/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"java": {
"package": "com.riverqueue:river",
"registry": "maven",
"version": "0.2.0"
"version": "0.3.0"
}
},
"migration": {
Expand Down
2 changes: 1 addition & 1 deletion java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.riverqueue</groupId>
<artifactId>river-java</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
<packaging>pom</packaging>
<name>River for Java</name>
<description>Transactional jobs on Postgres and SQLite, interoperable with River clients in other languages</description>
Expand Down
2 changes: 1 addition & 1 deletion java/river/pom.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.2.0</version></parent>
<parent><groupId>com.riverqueue</groupId><artifactId>river-java</artifactId><version>0.3.0</version></parent>
<artifactId>river</artifactId>
<name>River for Java library</name>
<description>Transactional jobs interoperable with River clients in other languages</description>
Expand Down
2 changes: 2 additions & 0 deletions rust/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Changes to River for Go are recorded in the [repository changelog](../CHANGELOG.

## [Unreleased]

## [0.5.0] - 2026-11-02

### Changed

- **Breaking:** Replace Chrono with Jiff 0.2 throughout the Rust API. Job timestamps, insertion options, retry hooks, periodic schedules, and test helpers now use `jiff::Timestamp`; River re-exports Jiff as `riverqueue::jiff`. Database formats and canonical timestamp JSON remain unchanged. [PR #1567](https://github.com/riverqueue/river/pull/1567).
Expand Down
10 changes: 5 additions & 5 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ homepage = "https://riverqueue.com"
license = "MPL-2.0"
repository = "https://github.com/riverqueue/river"
rust-version = "1.95"
version = "0.4.0"
version = "0.5.0"

[workspace.dependencies]
async-trait = "0.1.92"
Expand Down
4 changes: 2 additions & 2 deletions rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ River is a fast, reliable background job system backed by Postgres or SQLite. It

```toml
[dependencies]
riverqueue = "0.4.0"
riverqueue = "0.5.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal"] }
Expand All @@ -23,7 +23,7 @@ Rust version is 1.95.
| `tzdb` | no | IANA zone names such as `America/New_York` in cron `CRON_TZ=` and `TZ=` prefixes |

For SQLite alone, use
`riverqueue = { version = "0.4.0", default-features = false, features = ["sqlite"] }`.
`riverqueue = { version = "0.5.0", default-features = false, features = ["sqlite"] }`.

River's API uses types from SQLx (pools and transactions), Jiff
(timestamps), `serde_json` (metadata, outputs, and other JSON values), and
Expand Down
4 changes: 2 additions & 2 deletions rust/riverqueue-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ path = "src/main.rs"
doc = false

[dependencies]
riverqueue = { path = "../riverqueue", version = "=0.4.0", default-features = false }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.4.0", default-features = false }
riverqueue = { path = "../riverqueue", version = "=0.5.0", default-features = false }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.5.0", default-features = false }
serde.workspace = true
sqlx = { workspace = true, features = ["tls-rustls"] }
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "signal"] }
Expand Down
4 changes: 2 additions & 2 deletions rust/riverqueue-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ sqlite = ["riverqueue/sqlite"]

[dependencies]
jiff.workspace = true
riverqueue = { path = "../riverqueue", version = "=0.4.0", default-features = false }
riverqueue = { path = "../riverqueue", version = "=0.5.0", default-features = false }
serde_json.workspace = true
tokio-util.workspace = true

[dev-dependencies]
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.4.0", default-features = false, features = ["sqlite"] }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.5.0", default-features = false, features = ["sqlite"] }
serde.workspace = true
sqlx.workspace = true
tokio.workspace = true
Expand Down
6 changes: 3 additions & 3 deletions rust/riverqueue/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ base64.workspace = true
futures-util.workspace = true
jiff.workspace = true
jiff-sqlx = { version = "0.2.0", default-features = false, optional = true }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.4.0", default-features = false }
riverqueue-macros = { path = "../riverqueue-macros", version = "=0.4.0" }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.5.0", default-features = false }
riverqueue-macros = { path = "../riverqueue-macros", version = "=0.5.0" }
rand = { workspace = true }
serde.workspace = true
serde_json.workspace = true
Expand All @@ -45,7 +45,7 @@ tracing.workspace = true

[dev-dependencies]
anyhow = "1.0.104"
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.4.0", features = ["postgres", "sqlite"] }
riverqueue-migrate = { path = "../riverqueue-migrate", version = "=0.5.0", features = ["postgres", "sqlite"] }
serde.workspace = true
tracing-subscriber = { version = "0.3.20", default-features = false, features = ["registry", "std"] }
# Fault-injection tests proxy database connections.
Expand Down
4 changes: 2 additions & 2 deletions rust/riverqueue/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The [mixed deployment guide](https://docs.rs/riverqueue/latest/riverqueue/guide/

```toml
[dependencies]
riverqueue = "0.4.0"
riverqueue = "0.5.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal"] }
Expand All @@ -29,7 +29,7 @@ Rust version is 1.95.
| `tzdb` | no | IANA zone names such as `America/New_York` in cron `CRON_TZ=` and `TZ=` prefixes |

For SQLite alone, use
`riverqueue = { version = "0.4.0", default-features = false, features = ["sqlite"] }`.
`riverqueue = { version = "0.5.0", default-features = false, features = ["sqlite"] }`.

River's API uses types from SQLx (pools and transactions), Jiff
(timestamps), `serde_json` (metadata, outputs, and other JSON values), and
Expand Down
Loading