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 @jackkleeman in #1364
- Remove duplicate AWS_EXTERNAL_ID by @jackkleeman in #1363
- Implement business logic of idempotent invocations by @slinkydeveloper in #1348
- Refactor kafka config by @AhmedSoliman in #1366
- Store schema information in metadata store by @tillrohrmann in #1361
- Wire up the new idempotency implementation with ingress by @slinkydeveloper in #1354
- Remove old idempotency implementation by @slinkydeveloper in #1355
- Allow to configure the idempotency retention time on a component basis by @slinkydeveloper in #1357
- Idempotency retention should be a string by @slinkydeveloper in #1375
- Remove unnecessary SchemaView indirection by @tillrohrmann in #1368
- Support adding delay to send requests through the ingress by @slinkydeveloper in #1374
- Add request identity v1 to lambda calls by @jackkleeman in #1365
- Only insert NodesConfiguration, PartitionTable and Logs configuration if bootstrapping by @tillrohrmann in #1373
- Add
sys_idempotency
Datafusion table by @slinkydeveloper in #1381 - Introduction of RocksDbManager by @AhmedSoliman in #1380
- Better rocksdb shutdown by @AhmedSoliman in #1383
- Bifrost integration with rocksdb manager by @AhmedSoliman in #1382
- PP storage integration with rocksdb manager by @AhmedSoliman in #1385
- Enable nextest everywhere by @AhmedSoliman in #1386
- GHA updates and improvements by @AhmedSoliman in #1387
- Update benchmark code to work against new http ingress by @tillrohrmann in #1369
- Fix CLI inbox queries by @slinkydeveloper in #1379
- Invoker doesn't use FullInvocationId anymore by @slinkydeveloper in #1390
- Benchmark update by @AhmedSoliman in #1395
- Quick patch latency issues by @AhmedSoliman in #1396
- Remove
MaybeFullInvocationId
by @slinkydeveloper in #1392 - Introduce
InvocationTarget
by @slinkydeveloper in #1397 - Remove ServiceId usage in timers by @slinkydeveloper in #1398
- Support
HandlerType::Shared
by @slinkydeveloper in #1399 - Update opentelemetry libraries by @jackkleeman in #1406
- [Bifrost] local loglet append benchmark by @AhmedSoliman in #1401
- [Bifrost] Better chunked batching for bifrost by @AhmedSoliman in #1402
- Propagate
x-restate-server
by @slinkydeveloper in #1414 - Introduce StorageCodec which helps with encoding/decoding of (codec, value) pairs by @tillrohrmann in #1389
- More removal of old IDs by @slinkydeveloper in #1405
- Check whether the state entry types are valid for the given InvocationTarget by @slinkydeveloper in #1408
- Complete the id refactoring by @slinkydeveloper in #1409
- Propagate
EndMessage
related entry info in datafusion interface by @slinkydeveloper in #1415 - Improve the journal table by @slinkydeveloper in #1425
- More improvements to CLI by @slinkydeveloper in #1426
- Add mapping to rust structs for sql queries by @slinkydeveloper in #1430
- [RocksDb] shared env and config updates by @AhmedSoliman in #1424
- [RocksDb] Support for CF name pattern matching by @AhmedSoliman in #1427
- More CLI improvements by @slinkydeveloper in #1434
- Invoke,BackgroundInvoke -> Call,Send by @slinkydeveloper in #1436
- Use multi-threaded-cf rocksdb by @AhmedSoliman in #1431
- Use restate's rust-rocksdb writebatch by ref by @AhmedSoliman in #1432
- Support dynamic opening of cfs in rocksdb manager by @AhmedSoliman in #1433
- [RocksDb] Maintain storage bg thread pools by @AhmedSoliman in #1435
- Renamings by @slinkydeveloper in #1439
- Remove my fork of arrow_convert by @slinkydeveloper in #1440
- Update service-protocol with naming changes by @slinkydeveloper in #1441
- Add doc to specify that idempotency_retention accepts humantime format by @slinkydeveloper in #1442
- Fix Journal query in CLI by @slinkydeveloper in #1443
- Integrate local metadata store with new RocksDbManager by @tillrohrmann in #1437
- Fix broken links to docs by @gvdongen in #1300
- Replace bincode with StorageCodec and flexbuffers by @tillrohrmann in #1445
- Bump helm chart by @jackkleeman in #1448
- Add cluster marker and validate it at start up of Node by @tillrohrmann in #1400
- Include server string for deployments in invocations list by @slinkydeveloper in #1451
- Improve error messages on invoker by @slinkydeveloper in #1452
- Improve modified_at field in invocation status by @slinkydeveloper in #1453
- [RocksDb] Dispatch bifrost writes to bg threads automatically by @AhmedSoliman in #1438
- Configuration support for human-readable bytes by @AhmedSoliman in #1455
- Eyecandy on startup by @AhmedSoliman in #1460
- Update integration with RocksDbManager by @tillrohrmann in #1458
- Fix bad parsing of the descriptor for handler input validation rules by @slinkydeveloper in #1462
- Fix little bug when logging state machine effects by @slinkydeveloper in #1463
- Use metadata store RocksDbOptions instead of common RocksDbOptions by @tillrohrmann in #1464
- Little improvement to handlers Input/output types that are printed during registration. by @slinkydeveloper in #1459
- Remove all the usages of built-in services by @slinkydeveloper in #1457
- Use correct restate directory in binary builds by @jackkleeman in #1465
- Fix x86 mac binary builds by @jackkleeman in #1468
- Bump actions/upload-artifact to v4 and docker/build-push-action to v5 by @tillrohrmann in #1467
New Contributors
Full Changelog: v0.8.1...v0.9.0