Restate v1.6.1
This is a strongly recommended patch release for all v1.6.0 users, addressing critical stability and memory issues.
🔧 Critical Stability Fixes
Leadership Thrashing Resolved
In v1.6.0, RocksDB memory rebalancing could block the async runtime for 50–200ms, starving heartbeats and causing nodes to be falsely reported as down — leading to leadership loss and cluster instability. Memory rebalancing is now offloaded to background threads. If you experienced leadership thrashing on v1.6.0, this upgrade should resolve it.
Memory Leak in Networking Layer
Internal RPC callers that timed out could leave stale entries in the reply tracker, causing unbounded memory growth under sustained load. A periodic garbage collection mechanism now cleans these up automatically.
⚠️ Behavioral Change
The default worker.trim-delay-interval changed from 0s to 10m. This gives follower replicas time to catch up before log segments are trimmed, reducing unnecessary re-snapshotting. To restore the old behavior, set worker.trim-delay-interval = "0s" in your config.
🧠 Memory Improvements
- Eliminated high-water-mark buffer retention — Per-invocation protocol encoders no longer retain buffers sized to the largest message ever encoded, reducing memory overhead for clusters with many concurrent long-lived invocations.
- Lazy journal & state reading during replay — Journal entries and state are now read on demand from RocksDB instead of being fully materialized upfront, reducing peak memory during replay of invocations with large journals or state.
✨ New Features
OTEL_RESOURCE_ATTRIBUTESsupport — Attach deployment-specific metadata (environment, region, pod name) to all exported traces via the standard environment variable 🔍servicescolumn insys_deployment— Query which services belong to which deployment directly via SQL 🗃️- Weekly Docker image security refreshes — Images are now automatically rebuilt weekly with the latest OS security patches. Use date-suffixed tags (e.g.,
1.6.1-20260210) to pin specific builds 🐳
⚡ Performance Improvements
- More efficient invocation cleanup scans
- SQL query push-down filters for faster introspection queries on large tables
- Faster ID encoding (Base62)
🖥️ Web UI Updates (v0.1.46)
- Invocation duration column in the list view
- Paused invocations now show their error/reason directly
- Multiple bug fixes for journal ordering, transient error display, and state page refresh
🔒 Security
- Patched DoS vulnerability in
timecrate (RUSTSEC-2026-0009) - Updated
bytescrate to address security advisory
Install
Pull the Docker images
docker pull docker.restate.dev/restatedev/restate:1.6.1
docker pull docker.restate.dev/restatedev/restate-cli:1.6.1Install 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.6.1
npm install @restatedev/restate@1.6.1
npm install @restatedev/restatectl@1.6.1Download 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 |