From 8135479a27bae2b5a3b6a9210269782bd00f349f Mon Sep 17 00:00:00 2001 From: Gregorius Soedharmo Date: Tue, 23 Aug 2022 02:36:24 +0700 Subject: [PATCH 1/3] Update RELEASE_NOTES.md for 1.5.0-alpha1 release --- RELEASE_NOTES.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 319aae1eca1..46fafc5b625 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,75 @@ -#### 1.5.0-beta1 April 20 2022 #### -**Placeholder for first beta release of Akka.NET v1.5** +#### 1.5.0-alpha1 August 22 2022 #### +Akka.NET v1.5.0-alpha1 is a major release that contains a lot of code improvement and rewrites/refactors. + +__Deprecation__ + +Some codes and packages are being deprecated in v1.5 +* [Deprecated/removed Akka.DI package](https://github.com/akkadotnet/akka.net/pull/6003) + Please use the new `Akka.DependencyInjection` NuGet package as a replacement. Documentation can be read [here](https://getakka.net/articles/actors/dependency-injection.html) +* [Deprecated/removed Akka.MultiNodeTestRunner package](https://github.com/akkadotnet/akka.net/pull/6002) + Please use the new `Akka.MultiNode.TestAdapter` NuGet package as a replacement. Documentation can be read [here](https://getakka.net/articles/testing/multi-node-testing.html). +* [Streams] [Refactor `SetHandler(Inlet, Outlet, IanAndOutGraphStageLogic)` to `SetHandlers()`](https://github.com/akkadotnet/akka.net/pull/5931) + +__Changes__ + +__Akka__ + +* [Add dual targetting to support .NET 6.0](https://github.com/akkadotnet/akka.net/pull/5926) + All `Akka.NET` packages are now dual targetting netstandard2.0 and net6.0 platforms, we will be integrating .NET 6.0 better performing API and SDK in the future. +* [Add `IThreadPoolWorkItem` support to `ThreadPoolDispatcher`](https://github.com/akkadotnet/akka.net/pull/5943) +* [Add `ValueTask` support to `PipeTo` extensions](https://github.com/akkadotnet/akka.net/pull/6025) +* [Add `CancellationToken` support to `Cancelable`](https://github.com/akkadotnet/akka.net/pull/6032) +* [Fix long starting loggers crashing `ActorSystem` startup](https://github.com/akkadotnet/akka.net/pull/6053) + All loggers are asynchronously started during `ActorSystem` startup. A warning will be logged if a logger does not respond within the prescribed `akka.logger-startup-timeout` period and will be awaited upon in a detached task until the `ActorSystem` is shut down. This have a side effect in that slow starting loggers might not be able to capture all log events emmited by the `EventBus` until it is ready. + +__Akka.Cluster__ + +* [Fix `ChannelTaskScheduler` to work with Akka.Cluster, ported from 1.4](https://github.com/akkadotnet/akka.net/pull/5920) +* [Harden `Cluster.JoinAsync()` and `Cluster.JoinSeedNodesAsync()` methods](https://github.com/akkadotnet/akka.net/pull/6033) +* [Fix `ShardedDaemonProcess` should use lease, if configured](https://github.com/akkadotnet/akka.net/pull/6058) +* [Make `SplitBrainResolver` more tolerant to invalid node records](https://github.com/akkadotnet/akka.net/pull/6064) +* [Enable `Heartbeat` and `HearbeatRsp` message serialization and deserialization](https://github.com/akkadotnet/akka.net/pull/6063) + By default, `Akka.Cluster` will now use the new `Heartbeat` and `HartbeatRsp` message serialization/deserialization that was introduced in version 1.4.19. If you're doing a rolling upgrade from a version older than 1.4.19, you will need to set `akka.cluster.use-legacy-heartbeat-message` to true. + +__Akka.Cluster.Sharding__ + +* [Refactor the underlying code organization](https://github.com/akkadotnet/akka.net/pull/5857) + * TODO: What are the actual changes in this PR? +* [Make Cluster.Sharding recovery more tolerant against corrupted persistence data](https://github.com/akkadotnet/akka.net/pull/5978) + +__Akka.Cluster.Tools__ + +* [Add typed `ClusterSingleton` support](https://github.com/akkadotnet/akka.net/pull/6050) +* [Singleton can use `Member.AppVersion` metadata to decide its host node during hand-over](https://github.com/akkadotnet/akka.net/pull/6065) + `Akka.Cluster.Singleton` can use `Member.AppVersion` metadata when it is relocating the singleton instance. When turned on, new singleton instance will be created on the oldest node in the cluster with the highest `AppVersion` number. You can opt-in to this behavior by setting `akka.cluster.singleton.consider-app-version` to true. + +__Akka.Persistence.Query__ + +* [Add `TimeBasedUuid` offset property](https://github.com/akkadotnet/akka.net/pull/5995) + +__Akka.Remote__ + +* [Fix typo in HOCON SSL settings. Backward compatible with the old setting names](https://github.com/akkadotnet/akka.net/pull/5895) +* [Treat all exceptions thrown inside `EndpointReader` message dispatch as transient, Ported from 1.4](https://github.com/akkadotnet/akka.net/pull/5972) +* [Fix SSL enable HOCON setting](https://github.com/akkadotnet/akka.net/pull/6038) + +__Akka.Streams__ + +* [Allow GroupBy sub-flow to re-create closed sub-streams, backported to 1.4](https://github.com/akkadotnet/akka.net/pull/5874) +* [Fix ActorRef source not completing properly, backported to 1.4](https://github.com/akkadotnet/akka.net/pull/5875) +* [Rewrite `ActorRefSink` as a `GraphStage`](https://github.com/akkadotnet/akka.net/pull/5920) +* [Add stream cancellation cause upstream propagation, ported from 1.4](https://github.com/akkadotnet/akka.net/pull/5949) +* [Fix `VirtualProcessor` subscription bug, ported from 1.4](https://github.com/akkadotnet/akka.net/pull/5950) +* [Refactor `Sink.Ignore` signature from `Task` to `Task`](https://github.com/akkadotnet/akka.net/pull/5973) +* [Add `SourceWithContext.FromTuples()` operator`](https://github.com/akkadotnet/akka.net/pull/5987) +* [Add `GroupedWeightedWithin` operator](https://github.com/akkadotnet/akka.net/pull/6000) +* [Add `IAsyncEnumerable` source](https://github.com/akkadotnet/akka.net/pull/6044) + +__Akka.TestKit__ + +* [Rewrite Akka.TestKit to work asynchronously from the ground up](https://github.com/akkadotnet/akka.net/pull/5953) + + #### 1.4.37 April 14 2022 #### Akka.NET v1.4.37 is a minor release that contains some minor bug fixes. From 29ab61d9969c9254f78c1f97fb0afa9699fd583f Mon Sep 17 00:00:00 2001 From: Aaron Stannard Date: Mon, 22 Aug 2022 14:51:57 -0500 Subject: [PATCH 2/3] Update RELEASE_NOTES.md --- RELEASE_NOTES.md | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 46fafc5b625..bf24bf59e0b 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,5 @@ #### 1.5.0-alpha1 August 22 2022 #### -Akka.NET v1.5.0-alpha1 is a major release that contains a lot of code improvement and rewrites/refactors. +Akka.NET v1.5.0-alpha1 is a major release that contains a lot of code improvement and rewrites/refactors. **Major upgrades to Akka.Cluster.Sharding in particular**. __Deprecation__ @@ -33,9 +33,48 @@ __Akka.Cluster__ __Akka.Cluster.Sharding__ -* [Refactor the underlying code organization](https://github.com/akkadotnet/akka.net/pull/5857) - * TODO: What are the actual changes in this PR? * [Make Cluster.Sharding recovery more tolerant against corrupted persistence data](https://github.com/akkadotnet/akka.net/pull/5978) +* [Major reorganization to Akka.Cluster.Sharding](https://github.com/akkadotnet/akka.net/pull/5857) + +The Akka.Cluster.Sharding changes in Akka.NET v1.5 are significant, but backwards compatible with v1.4 and upgrades should happen seamlessly. + +Akka.Cluster.Sharding's `state-store-mode` has been split into two parts: + +* CoordinatorStore +* ShardStore + +Which can use different persistent mode configured via `akka.cluster.sharding.state-store-mode` & `akka.cluster.sharding.remember-entities-store`. + +Possible combinations: + +state-store-mode | remember-entities-store | CoordinatorStore mode | ShardStore mode +------------------ | ------------------------- | ------------------------ | ------------------ +persistence (default) | - (ignored) | persistence | persistence +ddata | ddata | ddata | ddata +ddata | eventsourced (new) | ddata | persistence + +There should be no breaking changes from user perspective. Only some internal messages/objects were moved. +There should be no change in the `PersistentId` behavior and default persistent configuration (`akka.cluster.sharding.state-store-mode`) + +This change is designed to speed up the performance of Akka.Cluster.Sharding coordinator recovery by moving `remember-entities` recovery into separate actors - this also solves major performance problems with the `ddata` recovery mode overall. + +The recommended settings for maximum ease-of-use for Akka.Cluster.Sharding going forward will be: + +``` +akka.cluster.sharding{ + state-store-mode = ddata + remember-entities-store = eventsourced +} +``` + +However, for the sake of backwards compatibility the Akka.Cluster.Sharding defaults have been left as-is: + +``` +akka.cluster.sharding{ + state-store-mode = persistence + # remember-entities-store (not set - also uses legacy Akka.Persistence) +} +``` __Akka.Cluster.Tools__ From 3561ada7b31e88fef354d788ed3ca1444eacbf95 Mon Sep 17 00:00:00 2001 From: Aaron Stannard Date: Mon, 22 Aug 2022 14:53:41 -0500 Subject: [PATCH 3/3] Update RELEASE_NOTES.md --- RELEASE_NOTES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index bf24bf59e0b..82951f14416 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -76,6 +76,8 @@ akka.cluster.sharding{ } ``` +Switching over to using `remember-entities-store = eventsourced` will cause an initial migration of data from the `ShardCoordinator`'s journal into separate event journals going forward - __this migration is irreversible__ without taking the cluster offline and deleting all Akka.Cluster.Sharding-related data from Akka.Persistence, so plan accordingly. + __Akka.Cluster.Tools__ * [Add typed `ClusterSingleton` support](https://github.com/akkadotnet/akka.net/pull/6050)