v1.5.0 Release notes
[NOTICE] http-ingress
server role
In v1.4.x you might have seen this warning:
💡
!!! This node has aworker
role and no explicithttp-ingress
role.http-ingress
will be started anyway in this version. In v1.5, running ingress will require the rolehttp-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-server
s 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 replaceworker.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 |