Releases: restatedev/restate
v0.4.0
Breaking changes
- Due to some breaking changes to the storage format, we recommend existing users to start with a new cluster and wipe all existing state.
- We've updated the default ports allocation, to reduce potential conflicts with other commonly used tools. See https://docs.restate.dev/restate/deployment.
- We've simplified the definition of Protobuf service contracts for event handlers. See https://docs.restate.dev/services/sdk/kafka.
- Introduced non-backward compatible change in the built-in service
dev.restate.Ingress
. See https://github.com/restatedev/proto/blob/main/dev/restate/services.proto. - This release works only with sdk-typescript >= 0.3.1
New features
- You can now provide an idempotency key when sending requests to Restate from an external client. This allows to implement end-to-end exactly once processing of requests. See https://docs.restate.dev/services/invocation#invoke-a-service-idempotently.
- The introspection SQL interface has been expanded with two new tables:
sys_invocation_state
to inspect the status of in-flight invocations.sys_journal
to inspect the invocation journal.
- External ingress invocation traces now have client socket info
Among the other changes, we've also included a plethora of bug fixes and small improvements.
Enjoy!
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Breaking changes
Due to some breaking changes to the storage format, we recommend existing users to start with a new cluster and wipe all existing state.
Changes
- New feature: Add Kafka ingress, to read events from Kafka directly in restate services. Check the documentation https://docs.restate.dev/services/sdk/kafka for more details.
- New feature: Now you can use the function
key_to_json
in SQL queries to convert the service key to json - Improvements: Now
GET /service
in the Admin API returns more metadata about service methods - Various fixes
Full changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
- Rename Meta REST Operational API into Admin API by @tillrohrmann in #736
- Make Storage::Transaction a GAT by @tillrohrmann in #738
- Presize serialization buffers of storage types by @tillrohrmann in #739
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Breaking changes
Due to the amount of breaking changes, we recommend existing users to start with a new cluster and wipe all existing state. This release is compatible only with SDK versions starting from 0.2.0 (using the new versioning scheme).
Changes
- Breaking: Invocation identifiers and Awakeable identifiers now have a new string format, they are shorter and bounded (both around ~30 characters). You can safely include these identifiers in path parameters, or in headers, without any risk to hit size limits. Awakeable identifiers created with a previous release are not compatible with this release.
- New feature: Implement the
dev.restate.Awakeables
built-in service, to complete awakeables directly from the ingress - New feature: Added support to reject Awakeables, that is completing an awakeable with a failure value.
- New feature: Added
GET /endpoints
in the admin api to retrieve the list of registered endpoints - Breaking: Modified the
DELETE /invocations
in the admin api to accept the id of the invocation as path parameter:DELETE /invocations/:invocation_id
- Breaking: Modified the
PartitionKey
type tou64
- Various fixes
Full Changelog: v0.1.7...v0.2.0
v0.1.7
Overview
- Adding support for querying the storage via SQL. This allows getting access to the state and status table of the system which helps understanding and debugging the system.
What's Changed
- Fix using the otlp exporter and the jager file exporter at the same time by @slinkydeveloper in #631
- Make sure we don't generate spans with negative duration. by @slinkydeveloper in #634
- Provide a knob to configure HTTP/2 keep-alive by @slinkydeveloper in #632
- Fix keepalive documentation by @slinkydeveloper in #635
- Ignore multiple completions for awakeables by @slinkydeveloper in #637
- Remove GitHub actions for building and releasing CLI by @tillrohrmann in #645
- Support gRPC health check service by @slinkydeveloper in #644
- Add /health endpoint in the META REST API by @slinkydeveloper in #647
- Use docs subdomain by @jackkleeman in #650
- Remove "unstable" feature from h2 dependency in restate_invoker_impl package by @tillrohrmann in #651
- ingress_service_invocation -> ingress_invoke $method by @jackkleeman in #656
- Rename timeouts and set abort_timeout to 60s by default by @tillrohrmann in #659
- Rename docker workflow input artifactInsteadOfPush to uploadImageAsTarball by @tillrohrmann in #660
- Don't store requires_ack = true by @slinkydeveloper in #649
- Put Restate under Business Source License by @tillrohrmann in #657
- Remove the Ok variant from UserErrorCode by @tillrohrmann in #662
- Update release documentation by @tillrohrmann in #663
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Overview
- Tracing improvements. Now the traces will look more natural, as if they're published by services. Look at the documentation to configure observability.
- (Breaking) Upgrade and versioning of services. Registering services now works differently, and supports different service revisions. For more details, look at the documentation.
What's Changed
- Extract interface for worker apis and move it to separate package by @slinkydeveloper in #531
- Correct logging of invoking invocations when popping the inbox by @tillrohrmann in #539
- Move
ConversionError
fromrestate_common
torestate_storage_api
by @slinkydeveloper in #532 - Replace
GenericError
withanyhow::Error
by @slinkydeveloper in #533 - Merge
restate_journal
intorestate_common
by @slinkydeveloper in #541 - Merge
restate_service_metadata
types intorestate_common
. by @slinkydeveloper in #545 - Use opentelemetry-otlp for exporting spans to OTLP compatible systems by @tillrohrmann in #553
- Invoker concurrency quota by @slinkydeveloper in #548
- Set force-frame-pointers=yes on arm machines on arm linux by @jackkleeman in #557
- Fix arm64 rustflags by @jackkleeman in #568
- Move storage related types from common to storage_api by @slinkydeveloper in #536
- Refactor
common
by @slinkydeveloper in #551 - Introduce restate_benchmarks package with sequential and parallel throughput benchmark by @tillrohrmann in #561
- Schema registry design proposal by @slinkydeveloper in #511
- Expand the rust-guidelines.md with the new conventions by @slinkydeveloper in #556
- Remove unnecessary format! calls in Consensus module by @tillrohrmann in #571
- Integrate the new schema registry by @slinkydeveloper in #559
- Remove
EndpointMetadata.delivery_options.retry_policy
by @slinkydeveloper in #570 - Introduce ServiceRevision, and support registering new endpoints by @slinkydeveloper in #563
- Introduce META REST endpoint to get a service endpoint by id by @slinkydeveloper in #565
- Remove /services/discover, rename /endpoints/discover to /endpoints by @slinkydeveloper in #572
- Update README.md by @slinkydeveloper in #579
- Update the Meta Endpoint to discover services in the benchmarks by @slinkydeveloper in #578
- Record the endpoint id used when invoking a service, and restore it when replaying. by @slinkydeveloper in #573
- META endpoints API ergonomics/inconsistency fixes by @slinkydeveloper in #584
- Always push main docker images by @jackkleeman in #587
- Revert "Always push main docker images" by @jackkleeman in #588
- Always push main docker images by @jackkleeman in #589
- Make it possible to build debug docker images by @jackkleeman in #590
- Ensure debug field is set on chef cook too by @jackkleeman in #591
- Port bincode to 2.0 in restate_queue by @slinkydeveloper in #576
- Set force = true by default on /endpoints registration by @slinkydeveloper in #598
- Introduce explicit TracingGuard for shutting Tracing down from outside the Tokio thread by @tillrohrmann in #593
- Add support for configuring Restate in benchmarks via env variables by @tillrohrmann in #597
- Tracing improvements by @jackkleeman in #558
- Profiling benchmarks on Linux by @slinkydeveloper in #610
- Public and private services by @slinkydeveloper in #585
- Avoid the alloc/dealloc cycle in SegmentQueue by @slinkydeveloper in #613
- Add service instance type check when updating a service by @slinkydeveloper in #608
- Fix span relation assert by @jackkleeman in #616
- Remove service endpoints by @slinkydeveloper in #594
- Remove the ServiceInvocationFactory interface by @slinkydeveloper in #617
- Update to 0.1.6 by @slinkydeveloper in #618
Full Changelog: v0.1.5...v0.1.6
v0.1.5
What's Changed
- Introduce interface to export InvocationStatus by @slinkydeveloper in #526
- Refactor invoker following the rust conventions by @slinkydeveloper in #528
- Allow InvocationStateMachine to handle errors when waiting for retry by @tillrohrmann in #535
- Use a single channel for sending inputs to the Invoker by @tillrohrmann in #537
Full Changelog: v0.1.4...v0.1.5
v0.1.4
What's Changed
- Detect the case where
OutputStreamEntry
is sent twice by @slinkydeveloper in #489 - Move service_protocol_wireshark_dissector in the workspace by @slinkydeveloper in #490
- Run e2e tests in CI by @jackkleeman in #481
- Use new builtin gha docker cache type by @jackkleeman in #492
- Upload artifact directly for e2e tests by @jackkleeman in #491
- Remove verification test by @jackkleeman in #510
- Ensure we compare inputs.artifactInsteadOfPush to true by @jackkleeman in #512
- Introduce segmented queue in the invoker by @slinkydeveloper in #482
- Invocation error model overhaul by @slinkydeveloper in #507
- Execute the InvokeEntry resolution process within the invocation task by @slinkydeveloper in #509
- Check bad SuspensionMessage by @slinkydeveloper in #513
- Exclude tools packages from cargo default members by @tillrohrmann in #521
- Fix #519 by @slinkydeveloper in #522
- Implement Ingress Service by @slinkydeveloper in #515
- U64 time fields by @slinkydeveloper in #518
- Introduce FixedConsecutivePartition partition table by @tillrohrmann in #527
Full Changelog: v0.1.3...v0.1.4
v0.1.3
What's Changed
- Remove unused dependencies by @tillrohrmann in #461
- Bump console-subscriber to version 0.1.9 to support scheduled time by @tillrohrmann in #466
- Set default in memory timer limit to 1024 by @tillrohrmann in #467
- Reduce verification test log output to info level by @tillrohrmann in #476
- Force protocol type to RequestResponse if suspension_timeout is zero. by @slinkydeveloper in #479
- Move ProxyConnector to its own crate by @slinkydeveloper in #469
- Rename restate_test_utils to restate_test_util by @slinkydeveloper in #472
- Move verif test to use e2e image by @jackkleeman in #480
- Run TimerService as part of the partition processor by @tillrohrmann in #483
Full Changelog: v0.1.2...v0.1.3
v0.1.2
What's Changed
- Make sure all internal channels are configured using the channel_size by @slinkydeveloper in #428
- Generic error code for InvocationTask by @slinkydeveloper in #431
- Add support for HTTP_PROXY by @jackkleeman in #429
- [storage] Add additional configuration parameters by @igalshilman in #414
- Listen on the closed() channel signal for service discovery, to abort when client goes away by @slinkydeveloper in #434
- Validate the sdk is not writing data frames after the end of the stream by @slinkydeveloper in #435
- Fix issue with missing state machine when retrying UnexpectedEndOfStream by @slinkydeveloper in #436
- Use restatedev/dev-tools image as the base image for planner and builder by @tillrohrmann in #378
- Send abort to invoker even if it's not in storage anymore by @slinkydeveloper in #433
- Update assert2 (previous release was yanked) by @slinkydeveloper in #457
- Modify the state handling of the end stream, moving the concern to the InvocationTask by @slinkydeveloper in #449
- Clean GA runner by removing unnecessary software by @tillrohrmann in #462
- [storage] Upgrade rocksdb to the latest version by @igalshilman in #444
- [storage] Make sure to delete status of freed services by @igalshilman in #464
- Implement key extraction from json and use it for the kill endpoint by @slinkydeveloper in #441
- Use consistent seeds in verification test by @jackkleeman in #465
Full Changelog: v0.1.1...v0.1.2