Releases: restatedev/restate
v1.1.2
Restate 1.1.2
IMPORTANT for SDK-Typescript users: Only when upgrading from 1.0.x to 1.1.x you MUST rediscover all the existing deployments using restate dp register <address> --force
. You don't need to update the SDK, nor change the code.
IMPORTANT: If you upgraded a 1.0.x installation to version 1.1.1, please first upgrade to 1.1.2 before attempting a downgrade back to 1.0.2.
This release contains an important compatibility update for anyone running Restate 1.1.1. Our versioning policy is to maintain rollback ability to the last minor version; Restate 1.1.1 broke this promise by shipping an upcoming feature called called log-server by default.
Please see the new Upgrading section on the Restate website for more information about version updates in general: https://docs.restate.dev/operate/upgrading.
If you are running Restate 1.0.x
We recommend that you upgrade directly to 1.1.2 (or the latest available patch release), and specifically to avoid 1.1.1.
If you are already running Restate 1.1.1
Please upgrade to 1.1.2 and delete the directory ${base_dir}/${node_name}/log-store
to avoid issues with future upgrades. To avoid a crash on startup, please upgrade to 1.1.2 before attempting a downgrade back to 1.0.2.
What's Changed
- [Security] Bump quinn crate version by @pcholakov in #1965
- [Networking Add ability to register raw handlers in message router by @AhmedSoliman in https://github.com//pull/1957
- Kafka perf improvements by @slinkydeveloper in #1964
- Make sure we don't send the awakeable completion twice by @slinkydeveloper in #1973
- Disable log-server role by default to fix v1.0.x compatibility by @AhmedSoliman in #1974
Full Changelog: v1.1.1...v1.1.2
v1.1.1
Restate 1.1.1
IMPORTANT for SDK-Typescript users: Only when upgrading from 1.0.x to 1.1.x you MUST rediscover all the existing deployments using restate dp register <address> --force
. You don't need to update the SDK, nor change the code.
This is a bug fix release which corrects an issue making the sys_invocation_state
introspection table inaccessible (#1961).
What's Changed
- [Bifrost] Moves LogletOffset to restate-types by @AhmedSoliman in #1927
- [Networking] Allow sending messages through Outgoing by @AhmedSoliman in #1928
- [Bifrost] Move Record to restate-types by @AhmedSoliman in #1929
- use opentelemetry to separate services from runtime traces by @muhamadazmy in #1922
- Fix state_machine teardown in tests by @AhmedSoliman in #1941
- Update release checklist doc by @pcholakov in #1930
- [Bifrost] Move TailState to restate-types by @AhmedSoliman in #1933
- PolyBytes serde by proxy by @AhmedSoliman in #1935
- Testing helpers for networking by @AhmedSoliman in #1936
- Report roles and address on startup by @AhmedSoliman in #1937
- [LogServer] Initial implementation for store path by @AhmedSoliman in #1938
- [LogServer] Support for seal by @AhmedSoliman in #1939
- [LogServer] GetTailInfo message by @AhmedSoliman in #1942
- Add loadtest environment CDK stack by @pcholakov in #1946
- [TestEnv] supporting routing responses back to callers by @muhamadazmy in #1947
- [LogServer] GetRecords basic implementation by @AhmedSoliman in #1944
- [LogServer] Reject stores with no records by @AhmedSoliman in #1945
- [LogServer] Support for trimming loglets by @AhmedSoliman in #1951
- [LogServer] GetLogInfo replaces GetTailInfo by @AhmedSoliman in #1952
- [ReplicatedLoglet] Define Append Messages by @AhmedSoliman in #1956
- [ReplicatedLoglet] ReplicationProperty is failure-domain-aware by @AhmedSoliman in #1959
- Let MultiplexedInvokerStatusReader share state by @tillrohrmann in #1962
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Restate 1.1.0
IMPORTANT for SDK-Typescript users: Only when upgrading from 1.0.x to 1.1.x you MUST rediscover all the existing deployments using restate dp register <address> --force
. You don't need to update the SDK, nor change the code.
Notable changes:
- Restate now sets the
x-restate-invocation-id
header when making service invocations to support load balancers implementing "sticky" routing - Improved forward- and backward-compatibility checks with data store on service startup
- When discovering
https
service deployments, now both HTTP/1.1 and HTTP/2 are supported, with negotiation performed using ALPN. When discoveringhttp
deployments, HTTP/2 prior knowledge is assumed, but you can override it to use HTTP/1.1 by passing the--use-http1.1
flag torestate deployments register
. - We now publish a Docker image
restatedev/restate-cli
containing therestate
CLI tool (#1758) - Restate CLI and SQL interface now contain several additional fields to improve debugging your service invocations.
Notable bug fixes:
- Service-to-service invocations will now correctly propagate headers
- Tracing context header injection at the Restate ingress endpoint works as expected
Infrastructure updates:
- Forward compatibility with the upcoming Service Invocation Protocol V2, enabling granular retry policies
- Introduces the
restatectl
administrative tool which helps operators manage Restate cluster configuration - Foundational work on the Restate distributed log and data partitioning for upcoming distributed deployment support
What's Changed
- Fix pinned_deployment_id is printed incorrectly in SQL by @slinkydeveloper in #1612
- [RocksDb] Fixing RocksDbPerfGuard's semantics and performance by @AhmedSoliman in #1606
- Use GET for service discovery by @slinkydeveloper in #1613
- Fix panics datafusion by @slinkydeveloper in #1618
- Update compatibility map to include 1.0.0 as a new breaking version by @tillrohrmann in #1616
- Check for backward compatibility when validating the cluster marker by @tillrohrmann in #1619
- [config] Adds invoker segment queue limit to configuration file by @AhmedSoliman in #1622
- Unify mocks and test-util feature in crates by @tillrohrmann in #1627
- Use different directories for cluster marker tests by @tillrohrmann in #1628
- [CLI] Bootstrapping restatectl admin command line by @AhmedSoliman in #1625
- Lazily calculate value when using StyledTable::add_kv_row_if and predicate is true by @tillrohrmann in #1632
- feat: update pgwire to latest release by @sunng87 in #1634
- Generate documentation of SQL tables by @slinkydeveloper in #1623
- Delete the node dir when wiping all by @tillrohrmann in #1630
- Let shuffle always use get_next_message to support holey outboxes by @tillrohrmann in #1640
- Support http1 for request-response protocol deployments by @jackkleeman in #1232
- [restatectl] dump cluster-state by @AhmedSoliman in #1638
- Update rocksdb dependency by @AhmedSoliman in #1653
- CLI should respect that not just virtual objects are stateful by @jackkleeman in #1656
- [reorg] Stage 1 by @AhmedSoliman in #1643
- [reorg] Stage 2 by @AhmedSoliman in #1644
- [Housekeeping] Upgrade toolchain and deps by @AhmedSoliman in #1645
- Fix erroneous enable of test-util by @AhmedSoliman in #1647
- [LogServer] Stub log server service by @AhmedSoliman in #1652
- Replace clean-runner with jlumbroso/free-disk-space by @tillrohrmann in #1657
- Remove empty line which breaks the help message description by @tillrohrmann in #1658
- Only emit admin API incompatibility warning if cluster is running by @tillrohrmann in #1659
- Fix underflow in Millis/Nanos SinceEpoch elapsed by @AhmedSoliman in #1663
- [invoker] Add x-restate-invocation-id header by @igalshilman in #1670
- [Bifrost] minor cleanups by @AhmedSoliman in #1664
- MetadataBuilder to untangle shared metadata construction by @AhmedSoliman in #1665
- Updateable is now Live by @AhmedSoliman in #1668
- Schemas -> Live by @AhmedSoliman in #1671
- Support http2 request-response endpoints (forwardport) by @jackkleeman in #1674
- Remove two default imports from datafusion dependency by @jackkleeman in #1679
- [Bifrost] Eager providers initialization by @AhmedSoliman in #1681
- OpenDB is async and BoxedLiveLoad by @AhmedSoliman in #1682
- [Bifrost] ReplicatedLoglet bifrost stubs by @AhmedSoliman in #1683
- Start ingress only after all partitions have a leader by @tillrohrmann in #1686
- [CLI] Emit correct row count from CLI sql subcommand JSON mode by @pcholakov in #1685
- [Bifrost] Tail semantics change by @AhmedSoliman in #1689
- [Bifrost] Chain and Log metadata improvements by @AhmedSoliman in #1691
- [Bifrost] Logs metadata builder and multi-segment finder by @AhmedSoliman in #1693
- Update leader election protocol by @tillrohrmann in #1694
- Port invoker and a couple of other modules to Hyper 1.0/HTTP 1.0 by @slinkydeveloper in #1716
- Add missing fedora local dev env protobuf dependency by @aradwann in #1728
- Sync nodes configuration if node from the future connects by @tillrohrmann in #1699
- Show invocation completion in CLI by @slinkydeveloper in #1719
- Update aws deps in service-client by @jackkleeman in #1734
- Use http 1.x/hyper 1.x in admin API and part of CLI by @slinkydeveloper in #1733
- Fix bug in
IdempotencyId::combine
that prevented correct storing of idempotency key in idempotency table by @slinkydeveloper in #1723 - [Bifrost] Decouples loglet dependencies from bifrost by @AhmedSoliman in #1704
- [Bifrost] Decouple loglet errors from bifrost errors by @AhmedSoliman in #1705
- [Bifrost] Base seal tests and implements seal() on memory loglet by @AhmedSoliman in #1717
- [Bifrost] Implements seal() for LocalLoglet by @AhmedSoliman in #1718
- [Bifrost] Init single-node loglets with random loglet ids by @AhmedSoliman in #1720
- [Bifrost] rename bifrost read functions by @AhmedSoliman in #1722
- [Bifrost] read correctly handles seal and tail instability by @AhmedSoliman in #1725
- [Bifrost] Improve merge operator performance by coalescing metadata updates by @AhmedSoliman in #1726
- Update workspace file by @slinkydeveloper in #1738
- Pass through headers in service to service calls by @jackkleeman in #1741
- Bump datafusion dependency to 35.0.0-object-store by @tillrohrmann in #1750
- Replace hyper 0.14 with reqwest and http 1.1 in benchmarks by @tillrohrmann in #1740
- Update metadata-store crate to use prost 0.13, tonic 0.12 and hyper 1.4 by @tillrohrmann in #1746
- Bump prost and tonic dependency to 0.13.1 and 0.12.1 respectively by @tillrohrmann in #1748
- Request metadata updates from peers by @tillrohrmann in #1700
- Update CLI hyper/http dependencies by @jackkleeman in #1739
- [Bifrost] Watch tail updates by @AhmedSoliman in #1743
- [Bifrost] Read stream support multi-segment logs by @AhmedSoliman in #1744
- [Bifrost] Introduces SegmentIndex to identify segments in the log chain by @AhmedSoliman in https://g...
v1.0.2
What's Changed
- We have identified a problem where Restate can get stuck after a restart. The problem can be solved by upgrading to this version w/o loss of data.
Details
- [BP] Lazily calculate value when using StyledTable::add_kv_row_if and predicate is true by @tillrohrmann in #1633
- [BP] feat: update pgwire to latest release by @tillrohrmann in #1636
- [BP] Add documentation generation for datafusion tables. by @tillrohrmann in #1637
- [BP] Delete the node dir when wiping all by @tillrohrmann in #1648
- [BP] Let shuffle always use get_next_message to support holey outboxes by @tillrohrmann in #1649
Full Changelog: v1.0.1...v1.0.2
v1.0.1
What's Changed
- Give user a tip if they run cloud login but they don't have an account by @jackkleeman in #1607
Full Changelog: v1.0.0...v1.0.1
Restate 1.0
We're happy to announce that Restate has reached the 1.0 milestone!
Storage compatibility
From this release onward, we guarantee storage compatibility when updating your Restate deployment. Check the versions documentation for more details.
From now on the SDK and Restate server releases are decoupled, meaning you will be able to run a service built with an old SDK version on newer server releases. More info on that to follow.
Workflow API
We have introduced a new API to simplify building workflows, check out the documentation: https://docs.restate.dev/develop/java/workflows
CLI
We have a bunch of new commands on the CLI to help you develop your application locally, check them out: https://docs.restate.dev/develop/local_dev
Metrics
The server now exports a lot of useful metrics to observe the system, check the documentation to configure them:https://docs.restate.dev/operate/monitoring/metrics
Full list of changes
- Update the softprops/action-gh-release and appany/helm-oci-chart-releaser actions by @tillrohrmann in #1470
- Remove RocksDb writer thread and disable WAL by @AhmedSoliman in #1456
- Add invocation target to invoker events by @slinkydeveloper in #1472
- Removing unnecessary chdir by @AhmedSoliman in #1473
- [RocksDb] Tables consolidation by @AhmedSoliman in #1466
- Partition-scoped storage reader in invoker by @AhmedSoliman in #1474
- Fix for state mutation through CLI by @AhmedSoliman in #1485
- Introducing per-partition PartitionStore by @AhmedSoliman in #1475
- Rename storage-rocksdb to partition-store by @AhmedSoliman in #1476
- PartitionProcessorManager as long-living service by @AhmedSoliman in #1481
- Unbreak datafusion by @AhmedSoliman in #1482
- PartitionId as NewType by @AhmedSoliman in #1483
- Betters shutdown logging by @AhmedSoliman in #1484
- use correct WriteOptions by @AhmedSoliman in #1487
- tx_batch and move sync db behind inner by @AhmedSoliman in #1488
- Introduce TimerKind to support different types of timers by @tillrohrmann in #1480
- Tune rocksdb for multi-cf setup by @AhmedSoliman in #1490
- Export task-center task names to tokio by @AhmedSoliman in #1491
- [ingress] Parse the value of delaySec query param by @igalshilman in #1498
- Tuning and combined improvements for perf and observability by @AhmedSoliman in #1493
- More metrics on PP loop. by @AhmedSoliman in #1497
- Fix the license headers by @jackkleeman in #1518
- Add Workflow service type and handler type by @slinkydeveloper in #1506
- Unify RpcStyle message routing by @AhmedSoliman in #1511
- Persist min/max supported protocol versions by a service endpoint by @tillrohrmann in #1508
- Fix content type checks on input when passing content type arguments by @slinkydeveloper in #1516
- Shorten URL Extract base URL from Google redirect by @khatibomar in #1522
- Workflow API integration part 1 by @slinkydeveloper in #1525
- Record service protocol version and send to service endpoint by @tillrohrmann in #1517
- Set and validate supported service discovery protocol version by @tillrohrmann in #1526
- Add promises support by @slinkydeveloper in #1515
- Implement /restate/invocation/{id}/attach and /restate/invocation/{id}/output by @slinkydeveloper in #1503
- Add sys_promise table by @slinkydeveloper in #1533
- Cloud CLI integration by @jackkleeman in #1519
- Attach to cluster controller through Networking by @AhmedSoliman in #1500
- Partial progress on ClusterState by @AhmedSoliman in #1514
- Adds header to bifrost payloads by @AhmedSoliman in #1520
- Remove unused deps by @AhmedSoliman in #1521
- Export tokio runtime metrics via prometheus by @AhmedSoliman in #1524
- Fix short extra_headers clap arg in CLI by @jackkleeman in #1537
- Fix issue with submit notification for virtual objects by @slinkydeveloper in #1539
- Add cancel/kill all invocations to a service or service instance by @slinkydeveloper in #1529
- Prevent race condition in ResponseTracker by using entry which holds the lock by @tillrohrmann in #1532
- Significantly reduce retry duration of service discovery by @jackkleeman in #1541
- Workflow key should be url encoded by @slinkydeveloper in #1543
- [Bifrost] Support append_batch by @AhmedSoliman in #1536
- Send x-restate-id header back on each request by @slinkydeveloper in #1542
- Introduce Admin API version and verify by CLI by @tillrohrmann in #1538
- Add CLI command to clear state of a specific instance or of all instances by @slinkydeveloper in #1530
- Unify duration parsing in admin api and ingress by @slinkydeveloper in #1547
- Record nanos instead of millis for bifrost record creation time by @AhmedSoliman in #1544
- Introduce bifrost benchpress by @AhmedSoliman in #1545
- Default to low-latency local loglet configuration by @AhmedSoliman in #1546
- Add cloud CLI proxy command by @jackkleeman in #1534
- Remove delaysec by @slinkydeveloper in #1553
- Fix ingress by @slinkydeveloper in #1559
- mock service endpoint by @AhmedSoliman in #1556
- Minor config tuning by @AhmedSoliman in #1557
- [Bifrost] bifrost loglet tailing read streams by @AhmedSoliman in #1558
- Reduce cost of TaskCenter atomics by @AhmedSoliman in #1563
- Attempt the non-blocking write in bg by @AhmedSoliman in #1565
- fix tests by @AhmedSoliman in #1566
- Add
restate invocation purge
to remove the workflow state by @slinkydeveloper in #1555 - Fix invocation_id returned in case we return the completed result of an already existing invocation by @slinkydeveloper in #1562
- Issues/ingress attach idempotency by @slinkydeveloper in #1567
- Add json output to sql queries by @slinkydeveloper in #1561
- Instrumentation and separate pp, ingress, and default runtimes by @AhmedSoliman in #1568
- Disable metric label extraction from tracing due to high cpu cost by @AhmedSoliman in #1569
- Disallow ddl and dml in datafusion by @jackkleeman in #1570
- Create directories in CLI config/env writes by @jackkleeman in #1571
- Use lossy string to log signing key path, as debug would add quotes/escapes by @jackkleeman in #1469
- [Perf] Rocksdb performance tuning by @AhmedSoliman in #1572
- Metadata store uses new memory budgeting by @AhmedSoliman in #1573
- Sql fixes by @slinkydeveloper in #1574
- Fix the sys_inbox table by @slinkydeveloper in #1577
- Fix total order seek for transaction iterators by @AhmedSoliman in #1578
- Update the lua dissector to work with the latest changes by @slinkydeveloper in #1580
- reduce logging level of task center by @AhmedSoliman in #1579
- increase nofile limit on startup by @AhmedSoliman in https://github...
v0.9.2
Full Changelog: v0.9.1...v0.9.2
v0.9.1
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Restate 0.9.0 is here 🎉
The latest Restate release comes with a ton of new useful features for you. This release focuses on improving the developer experience and we highly recommend looking at our new documentation and new examples.
Enjoy the release and give us feedback on discord to further improve Restate!
Notable improvements
- Restate is now configured using the TOML format and allowing hot reloads to change Restate's behavior w/o restarting it. Check out the configuration documentation for more details.
- Restate now exposes many more metrics telling you what is going on under the hood.
- Restate's internals have been reworked to support a distributed execution very soon.
Breaking changes
The new release contains a few breaking changes that require you to start the server with a clean storage directory.
What's Changed
- Move admin and meta component into cluster controller role by @tillrohrmann in #1180
- Eks pod identity implementation by @jackkleeman in #1197
- Task Center init by @AhmedSoliman in #1181
- TaskCenter all the things by @AhmedSoliman in #1194
- Typo fix by @AhmedSoliman in #1195
- Move Rocksdb back to upstream by @AhmedSoliman in #1196
- Rename cluster controller role into admin role by @tillrohrmann in #1198
- Unify metadata version type and remove nodes config singleton by @AhmedSoliman in #1200
- MetadataManager init by @AhmedSoliman in #1202
- Consolidate Services by @AhmedSoliman in #1203
- Let PartitionProcessor and Consensus module use restate_wal_protocol::Envelope by @tillrohrmann in #1204
- Move common to node-services by @AhmedSoliman in #1211
- move restate-task-center to restate-core by @AhmedSoliman in #1212
- Move metadata to restate-core by @AhmedSoliman in #1213
- metadata() for global metadata access by @AhmedSoliman in #1214
- Send ingress responses directly to ingress by @tillrohrmann in #1215
- Support adding tracing metadata via env var by @jackkleeman in #1206
- Split invocation status in invocation status/service status, Change keying of journal to invocation id by @slinkydeveloper in #1169
- Bump service protocol repo by @slinkydeveloper in #1238
- Update pinned tikv-jemallocator to fix CI by @jackkleeman in #1234
- Introduce new API to resolve
ComponentMetadata
by @slinkydeveloper in #1229 - New Ingress by @slinkydeveloper in #1236
- Support the new Component data model in the schema registry by @slinkydeveloper in #1241
- Propagate key in StartMessage by @slinkydeveloper in #1247
- Add tokio feature to hyper-util by @slinkydeveloper in #1252
- [2/n] Introduce node-protocol by @AhmedSoliman in #1242
- [3/n] Stub networking and network sender by @AhmedSoliman in #1243
- [4/n] TestCoreEnv helper for testing with restate-core by @AhmedSoliman in #1244
- [5/n] Streaming node-to-node networking infrastructure by @AhmedSoliman in #1245
- Add PartitionTable metadata by @AhmedSoliman in #1256
- Replaces the consensus module with Bifrost by @tillrohrmann in #1253
- Add helm chart by @jackkleeman in #1267
- Helm chart should use 0.8.1 image by @jackkleeman in #1270
- Add charts to dockerignore by @jackkleeman in #1271
- Interface refactor by @slinkydeveloper in #1248
- TestEnv support for mock networking by @AhmedSoliman in #1264
- Networking metrics by @AhmedSoliman in #1268
- Ingress dispatcher is concurrent and integrated with bifrost by @AhmedSoliman in #1269
- Add jitter to retries by @AhmedSoliman in #1274
- Cleanup Protobuf bits of schema registry by @slinkydeveloper in #1273
- More terminology changes in tables by @slinkydeveloper in #1283
- Remove Virtual journal by @slinkydeveloper in #1287
- Simplify Input and output entries by @slinkydeveloper in #1282
- Headers passthrough by @slinkydeveloper in #1286
- Fix Response error code data model by @slinkydeveloper in #1290
- Initial metadata store trait specification by @tillrohrmann in #1288
- Replace target with restate-data as the default storage directory by @tillrohrmann in #1277
- Update links in errors wrt new documentation structure by @tillrohrmann in #1293
- Improve Admin API by @slinkydeveloper in #1289
- Misc Improvements by @AhmedSoliman in #1301
- Add single node MetadataStore implementation by @tillrohrmann in #1291
- Initial local loglet implementation by @AhmedSoliman in #1302
- Integrate local metadata store into the Node by @tillrohrmann in #1307
- Fetch or insert fixed partition table by @tillrohrmann in #1309
- Move scheduling of delayed ServiceInvocations from caller PP to callee PP. by @slinkydeveloper in #1306
- Enables toml configs by @AhmedSoliman in #1320
- [1/n] Use snake_case for all configuration enums by @AhmedSoliman in #1321
- [2/n] Bifrost provider configuration improvements pt1 by @AhmedSoliman in #1322
- [3/n][Config] Flatten top-level options into CommonOptions by @AhmedSoliman in #1325
- [4/n] Partial refactor of worker and admin role configs by @AhmedSoliman in #1328
- Remove FullInvocationId as dependency to send invocation responses by @slinkydeveloper in #1331
- Remove built in service registration by @slinkydeveloper in #1304
- Add IdempotencyTable and modify InvocationStatus table by @slinkydeveloper in #1326
- Send output on
InvokerEffectKind::End
by @slinkydeveloper in #1335 - Merge worker-api with worker crate by @AhmedSoliman in #1330
- SIGUSR1 dumps the current config to logs by @AhmedSoliman in #1346
- Remove serde feature from restate-types by @tillrohrmann in #1340
- Store logs configuration in metadata store by @tillrohrmann in #1338
- Add EpochTable and integrate with existing code by @tillrohrmann in #1332
- New config types in restate-types by @AhmedSoliman in #1350
- A new config loader that can monitor config changes by @AhmedSoliman in #1351
- Invoker StatusReader now uses a different channel for status propagation by @slinkydeveloper in #1360
- Request identity v1 implementation by @jackkleeman in #1349
- task_center now owns the runtime and uses new config by @AhmedSoliman in #1352
- Tracing using new configuration with filter hot-reload support by @AhmedSoliman in #1353
- Bifrost to hold on to metadata by @AhmedSoliman in #1356
- arc-util non-blanket impl by @AhmedSoliman in #1358
- migrate bifrost to new config by @AhmedSoliman in #1359
- Migration to the new configuration by @AhmedSoliman in #1362
- InvocationStatus::Inboxed by @slinkydeveloper in #1334
- Update AWS dependencies by @j...
v0.8.1
What's Changed
- Patch google/protobuf/descriptor.proto and dev/restate/ext.proto by @tillrohrmann in #1263
Full Changelog: v0.8.0...v0.8.1