github restatedev/restate v1.7.10

3 hours ago

Restate 1.7.10

Restate 1.7.10 automatically cleans up obsolete VQueue metadata, adds opt-in cleanup for metadata accumulated by earlier versions, and improves VQueue metadata write efficiency.

🧹 Automatic VQueue Metadata Cleanup

Restate now removes a VQueue’s metadata when an update leaves the queue unpaused and fully empty, including its finished-entry stage.

This prevents workloads with many short-lived queues from accumulating obsolete metadata, limiting partition-store growth and avoiding increasingly expensive metadata scans.

After cleanup:

  • Fully empty, unpaused queues disappear from sys_vqueue_meta and the VQueue CLI.
  • Historical timestamps and exponential moving averages stored in deleted metadata are discarded. If the same queue is created again, its statistics restart.
  • Empty paused queues retain their metadata and pause state.

Automatic cleanup during queue updates requires no configuration.

💾 Clean Up Historical Metadata

A new, one-time local storage migration removes obsolete VQueue metadata accumulated by earlier versions.

After upgrading all cluster nodes to Restate 1.7.10 or newer, enable the migration on each node:

[common]
experimental-enable-vqueue-obsolete-cleanup = true

Each local partition-store replica scans its metadata in bounded, low-priority chunks and records completion to avoid repeating the scan.

The first startup with cleanup enabled may take longer, and deleting a large backlog can temporarily increase RocksDB compaction and disk I/O. For large backlogs, roll out the setting gradually across replicas, allowing cleanup and subsequent compaction to settle before restarting additional replicas.

A partition store that has completed this migration requires Restate 1.7.10 or newer. Do not downgrade it to an earlier version.

The migration is opt-in for Restate 1.7.10 and 1.8, and enabled unconditionally from Restate 1.9.

⚡ More Efficient VQueue Metadata Writes

Restate now periodically writes complete VQueue metadata instead of appending another RocksDB merge operation. These full writes shorten metadata merge chains, reducing the work needed to reconstruct metadata during reads, flushes, and compactions.

Alongside this change, the default worker.storage.rocksdb-max-successive-merges changes from 5000 to 0. This avoids repeated merge-chain counting and threshold-triggered value reconstruction on the write path.

Existing explicit settings remain effective. To retain the previous threshold:

[worker.storage]
rocksdb-max-successive-merges = 5000

📖 Full Release Notes

Install

Pull the Docker images

docker pull docker.restate.dev/restatedev/restate:1.7.10
docker pull docker.restate.dev/restatedev/restate-cli:1.7.10

Install prebuilt binaries via Homebrew

brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectl

Install prebuilt binaries into your npm project

npm install @restatedev/restate-server@1.7.10
npm install @restatedev/restate@1.7.10
npm install @restatedev/restatectl@1.7.10

Download 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

Don't miss a new restate release

NewReleases is sending notifications on new releases.