Restate 1.7.4
Restate 1.7.4 is a focused patch release with important fixes for VQueue scheduling, failure detection, partition-store write availability, and HTTP ingress error handling.
🛡️ VQueue Reliability Fixes
This release fixes a race during asynchronous VQueue refills. Concurrent updates could previously move an entry beyond an in-progress refill's overlay horizon, causing the scheduler to incorrectly consider the queue empty and miss the remaining invocation.
VQueue entries now also retain their pinned deployment when invocations are migrated or restarted as new. The sys_invocation_status, sys_vqueues, and sys_vqueue_entry_status tables now consistently report deployment usage, improving deployment draining checks.
No configuration or migration changes are required.
🌐 Safer HTTP Error Handling
HTTP ingress error responses now identify whether an error was generated by Restate's ingress or is the durable terminal outcome of an invocation.
Clients can inspect:
- The new
x-restate-error-sourceresponse header - The matching
sourcefield in the JSON error body - The numeric HTTP status in the new
codefield for ingress-generated errors
The source is either ingress or invocation, allowing clients to distinguish transient Restate failures from durable invocation failures and make safer retry decisions.
Several ingress-generated status codes have also been aligned with HTTP semantics:
- Internal dispatcher failures now return
503 Service Unavailable. - Unsupported invocation output requests now return
400 Bad Request. - The unavailable OpenAPI route now returns
404 Not Found.
🚦 Stable Failure Detection During Startup
The failure detector now resets its gossip timing when a node becomes ready.
Time spent starting node roles is no longer counted as missed gossip intervals. This prevents starting nodes from incorrectly considering healthy peers dead or reporting themselves as isolated.
No configuration changes are required.
💾 Fewer Partition-Store Write Stalls
Partition stores now tolerate more RocksDB compaction debt before slowing or stopping writes.
This improves write availability for deployments with large partitions when compaction falls behind. It may allow greater temporary disk usage and reduced read performance until compaction catches up.
🛠️ Additional Improvements
The restate invocations pause command now selects suspended invocations in addition to running and backing-off invocations.
📖 Full Release Notes → (https://github.com/restatedev/restate/blob/main/release-notes/v1.7.4.md)
Install
Pull the Docker images
docker pull docker.restate.dev/restatedev/restate:1.7.4
docker pull docker.restate.dev/restatedev/restate-cli:1.7.4Install prebuilt binaries via Homebrew
brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectlInstall prebuilt binaries into your npm project
npm install @restatedev/restate-server@1.7.4
npm install @restatedev/restate@1.7.4
npm install @restatedev/restatectl@1.7.4Download binary archives
| File | Platform | Checksum |
|---|---|---|
| restate-server-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| restate-server-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| restate-server-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| restate-server-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
| restate-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| restate-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| restate-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| restate-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
| restatectl-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| restatectl-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| restatectl-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| restatectl-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |