github restatedev/restate v1.6.2

7 hours ago

Restate v1.6.2

This patch release fixes a critical bug affecting lazy state users and includes several other bug fixes and improvements.

🐛 Critical Bug Fix: Lazy State Keys Encoding

If you are using lazy state (enableLazyState: true) and your handler calls ctx.stateKeys(), invocations could get stuck in a retry loop with a journal mismatch error (code 570) after suspending and resuming. The server was incorrectly storing GetLazyStateKeys commands as GetLazyState commands in the journal.

Note: This only affects handlers with lazy state enabled that call ctx.stateKeys(). Handlers using eager state or only ctx.get(key) are not affected. The Java SDK is also not affected.

After upgrading, new invocations work correctly. Existing stuck invocations have a corrupted journal and need to be resolved manually:

  1. Kill and re-invoke: restate invocations cancel --kill <INVOCATION_ID>
  2. Or apply an SDK-side fix (sdk-shared-core#60) that tolerates the mismatch during replay

🔧 Other Bug Fixes

  • SQL query predicate tolerance — Fixed a crash when DataFusion generated predicates with incorrect column indices for introspection table queries (#4389)
  • Fix clamp_max return value — Fixed incorrect reporting that a value was clamped when it was within the allowed range, which could cause spurious warnings during metadata schema processing

⚙️ Helm Chart: image.tag and image.digest

The version field in Helm chart values is now deprecated in favor of image.tag. A new image.digest field enables pinning images by SHA digest for reproducible deployments.

# New approach (replaces deprecated "version" field):
image:
  tag: "1.6.2"
# Or pin by digest:
image:
  digest: "sha256:abc123..."

Precedence: image.digest > image.tag > version. The version field continues to work for backward compatibility.

🖥️ Web UI Updates (v0.1.49)

  • Added support for displaying lazy state entries
  • Fixed display of lazy state keys entries
  • Minor UI improvements

📖 Full Release Notes →


Install

Pull the Docker images

```sh
docker pull docker.restate.dev/restatedev/restate:1.6.2
docker pull docker.restate.dev/restatedev/restate-cli:1.6.2
```

Install prebuilt binaries via Homebrew

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

Install prebuilt binaries into your npm project

```sh
npm install @restatedev/restate-server@1.6.2
npm install @restatedev/restate@1.6.2
npm install @restatedev/restatectl@1.6.2
```

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.