github restatedev/restate v1.5.0

5 hours ago

v1.5.0 Release notes

[NOTICE] http-ingress server role

In v1.4.x you might have seen this warning:

💡
!!! This node has a worker role and no explicit http-ingress role. http-ingress will be started anyway in this version. In v1.5, running ingress will require the role http-ingress to be set.

It’s now the time to ask you to add http-ingress to the list of roles you pass down to restate-server. This is only required if you use a configuration file, or if you pass roles as an argument restate-server --roles .

Starting from Restate v1.5.0, HTTP Ingress is started on nodes with http-ingress role. In previous version, http ingress was part of the worker role. The separation of roles enables users to scale-out ingress nodes independently from log-servers or worker .

You don’t need to change anything if you have not set the roles explicitly before.

Invocation progress retained by default

You’ll be able to inspect the invocation progress after the invocation completed for 24 hours, without additional configuration.

As in the previous release, you can tune this configuration using the journal retention knob on a service or handler basis. Check out the docs for service configuration. You can also set up a maximum journal retention value for your cluster using the configuration option max-journal-retention, by default disabled. This can be used in production setups to clamp the journal retention advertised by service configurations to an acceptable value of your choice.

New invocation retry policy

Based on your feedback, we have revamped the invocation retry policy experience. Restate v1.5.0 includes few new bits:

  • The new configuration option default-retry-policy, which will replace worker.invoker.retry-policy in the upcoming releases.
  • The new retry policy will now, by default, pause an invocation when max-attempts is reached. This avoids unnecessary retries, that incur in wasteful costs for FaaS users. You can inspect paused invocations, check the failure reason, and resume them simply clicking the Resume button in the UI (or CLI).
  • You can now override the invocation retry policy on a service/handler basis, similar to other configuration options. Check out the docs for service configuration.

To opt-in the new invocation retry policy experience, you need to set the new default-retry-policy in the restate-server configuration, e.g.:

[default-retry-policy]
initial-interval = "10s"
max-attempts = 100

When opting-in default-retry-policy, you can’t rollback to Restate v1.4.x, therefore, it’s safe to use this configuration only after upgrading all cluster nodes to v1.5.0.

SQL query engine performance

The SQL introspection query engine that powers the UI and CLI has received a major performance boost. Queries now run 5x to 20x faster making the UI/CLI experience snappier in high data volume environments.

We also solved several cases where queries led to the exhaustion of query engine memory.

For best results make sure you upgrade the CLI to the latest version along with your restate server.

Lambda compression

Restate server will now compress requests before sending them to AWS Lambda, when approaching the invocation payload limit. This allows for larger replays without hitting the PAYLOAD_TOO_LARGE error from Lambda.

Currently, this feature is only supported with services built with sdk-typescript ≥ 1.9, and doesn’t require any explicit activation.

Restart as new

You can now restart failed or succeeded invocations from the UI (or CLI) reusing the same request input. When restarting, a new invocation with a new invocation ID will be created.

This is a useful shortcut when you need to re-process the same request, without having the input at hand. No need to build your own dead letter queue logic anymore, just restart the failed invocations when you need to.

Retry now

Sometimes a back-off retry timer might be way too long, and you need to retry an invocation immediately. To do that, you can now simply click Retry now for an invocation in the UI.

Access log

Ingress and Admin API now have an access log feature, that logs all accesses to the APIs.

To enable it, enable the log filters restate_ingress_http::api and restate_admin::api. For example, to enable the default INFO logging plus the access log of ingress and Admin API: RUST_LOG=restate_admin::api,restate_ingress_http::api,info

Changes to service configuration

Starting from Restate v1.5.0, changes to the service configuration made through UI, CLI or Admin API will apply until a new revision of that service is registered. Check out the docs for service configuration for more details.

Deprecated old SDKs

In Restate v1.5.0 you won’t be able to register service deployments that use the following SDK versions:

  • Java SDK < 2.0
  • Typescript SDK < 1.5
  • Python SDK < 0.6
  • Go SDK < 0.16
  • Rust SDK < 0.4

In-flight invocations will continue to work fine. We strongly suggest to update to the latest SDKs to profit from all the new features!

Install

Pull the Docker images

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

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.5.0
npm install @restatedev/restate@1.5.0
npm install @restatedev/restatectl@1.5.0

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.