Releases: akkadotnet/akka.net
Akka.NET v1.4.44
1.4.44 October 17th 2022
Akka.NET v1.4.44 is a maintenance release for Akka.NET v1.4 that contains numerous performance improvements in critical areas, including core actor message processing and Akka.Remote.
Performance Fixes
- remove delegate allocation from
ForkJoinDispatcher
andDedicatedThreadPool
- eliminate
Mailbox
delegate allocations - Reduce
FSM<TState, TData>
allocations - removed boxing allocations inside
FSM.State.Equals
- Eliminate
DefaultLogMessageFormatter
allocations
In sum you should expect to see total memory consumption, garbage collection, and throughput improve when you upgrade to Akka.NET v1.4.44.
Other Features and Improvements
- Akka.Cluster and Akka.Cluster.Sharding: should throw human-friendly exception when accessing cluster / sharding plugins when clustering is not running
- Akka.Cluster.Sharding: Add
HashCodeMessageExtractor
factory - Akka.Persistence.Sql.Common: Fix
DbCommand.CommandTimeout
inBatchingSqlJournal
You can see the full list of fixes in Akka.NET v1.4.44 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
10 | 651 | 69 | @Aaronontheweb |
4 | 275 | 17 | @Arkatufus |
Changes:
- 79c652f added v1.4.44 release notes (#6197)
- 183ec5a removed boxing allocations inside
FSM
(#6183) - cc3a361 [BACKPORT #6173] Add HashCodeMessageExtractor factory (#6182)
- aca6850 Fix DbCommand.CommandTimeout (#6175) (#6180)
- 7e9e58f [BACKPORT #6166] Eliminate
DefaultLogMessageFormatter
allocations (#6168) - 5f8710d Improve error/exception message for misconfigured cluster provider (#6167)
- 23e5d92 make
DedicatedThreadPool.QueueUserWorkItem<T>
generic (#6156) - 234bb8f Reduce
FSM<TState, TData>
allocations (#6145) [ #2560 ] - a2b27a7 Make
Envelope
a reference type again (#6137) - bf273d9 added actor messaging pressure benchmark (#6147)
See More
- 4b1a746 remove delegate allocation from
ForkJoinDispatcher
andDedicatedThreadPool
(#6143) - f4402cb close #2560 - added performance benchmarks for FSM (#6144)
- 77d92fe Added Dispatcher Benchmarks (#6140)
- 1cee4d5 eliminate mailbox delegate allocations (#6134)
- 7441faa WIP queue benchmarks (#6127)
This list of changes was auto generated.
Akka.NET v1.4.43
1.4.43 September 27 2022
Akka.NET v1.4.43 is a minor release that contains a minor bug fix.
If you want to see the full set of changes made in Akka.NET v1.4.42, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
1 | 2 | 2 | Aaron Stannard |
1 | 172 | 4 | Gregorius Soedharmo |
Changes:
- 80cc680 Update RELEASE_NOTES.md for 1.4.43 (#6122)
- 86a0679 Fix GetEntityLocation use wrong actor path (#6120)
- 1f131d2 Fixing README.md URLs for v1.4 (#6115)
This list of changes was auto generated.
Akka.NET v1.4.42
1.4.42 September 23 2022
Akka.NET v1.4.42 is a minor release that contains some minor bug fixes.
-
In order to use this query, "remember entities" should be turned on or the provided shard
IMessageExtractor
supports theShardRegion.StartEntity
message. Complete documentation can be read here
If you want to see the full set of changes made in Akka.NET v1.4.42, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 66 | 3 | Gregorius Soedharmo |
1 | 557 | 118 | Aaron Stannard |
Changes:
- bfdd559 close #5375 - made README.md NuGet-friendly (#6112)
- 256235b cleaned up NuGet package descriptions (#6111)
- 9d8f38a Update RELEASE_NOTES.md for v1.4.42 release (#6110)
- 231c8c9 Akka.Cluster.Sharding
GetEntityLocation
Query (#6101) - e2b1d73 [Akka.TestKit] TestKitBase should take arbitrary ActorSystem without throwing (#6092) (#6094)
- 63639b9 Change TestKitBase.InitializeTest to virtual so it can be deferred (#6093)
- 03190b5 Require verbose logging for more gossip send/receive log statements. (#6089) (#6091)
This list of changes was auto generated.
Akka.NET v1.4.41
1.4.41 August 31 2022
Akka.NET v1.4.41 is a minor release that contains some minor bug fix and throughput performance improvement for Akka.Remote
-
Akka: Fix AddLogger in LoggingBus
Akka loggers are now loaded asynchronously by default. The
ActorSystem
will wait at mostakka.logger-startup-timeout
period long (5 seconds by default) for all loggers to report that they are ready before continuing the start-up process.A warning will be logged on each loggers that did not report within this grace period. These loggers will still be awaited upon inside a detached Task until either it is ready or the
ActorSystem
is shut down.These late loggers will not capture all log events until they are ready. If your logs are missing portion of the start-up events, check that the logger were loaded within this grace period.
-
Akka: Log Exception cause inside Directive.Resume SupervisorStrategy warning log
-
DData: Add "verbose-debug-logging" setting to suppress debug message spam
-
Akka: Regenerate protobuf codes
All protobuf codes were re-generated, causing a significant improvement in message deserialization, increasing
Akka.Remote
throughput.
Before
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19041.1415 (2004/May2020Update/20H1)
AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
.NET SDK=6.0.200
[Host] : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
DefaultJob : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Allocated |
---|---|---|---|---|---|---|
WritePayloadPdu | 1,669.6 ns | 21.10 ns | 19.74 ns | 0.2156 | - | 1,808 B |
DecodePayloadPdu | 2,039.7 ns | 12.52 ns | 11.71 ns | 0.2156 | 0.0031 | 1,816 B |
DecodePduOnly | 131.3 ns | 1.32 ns | 1.11 ns | 0.0563 | 0.0002 | 472 B |
DecodeMessageOnly | 1,665.0 ns | 15.03 ns | 14.05 ns | 0.1406 | - | 1,184 B |
DeserializePayloadOnly | 151.2 ns | 1.88 ns | 1.76 ns | 0.0199 | - | 168 B |
After
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19041.1415 (2004/May2020Update/20H1)
AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
.NET SDK=6.0.200
[Host] : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
DefaultJob : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Allocated |
---|---|---|---|---|---|---|
WritePayloadPdu | 1,623.4 ns | 19.95 ns | 18.66 ns | 0.2219 | 0.0031 | 1,880 B |
DecodePayloadPdu | 1,738.6 ns | 22.79 ns | 21.31 ns | 0.2250 | - | 1,888 B |
DecodePduOnly | 175.1 ns | 2.31 ns | 1.93 ns | 0.0572 | - | 480 B |
DecodeMessageOnly | 1,296.8 ns | 11.89 ns | 10.54 ns | 0.1469 | 0.0016 | 1,232 B |
DeserializePayloadOnly | 143.6 ns | 1.59 ns | 1.33 ns | 0.0199 | 0.0002 | 168 B |
If you want to see the full set of changes made in Akka.NET v1.4.41, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
4 | 13003 | 1150 | Gregorius Soedharmo |
1 | 3 | 4 | Aaron Stannard |
Changes:
- 07b5b15 Update RELEASE_NOTES.md for 1.4.41 release (#6088)
- 1a1c4b6 Regenerate all protobuf messages (#6087)
- a0f0032
AkkaPduCodec
serializer benchmark (#6078) (#6086) - bfba848 [BACKPORT] #6080 Extend DistributedData Replicator settings with VerboseDebugLogging switch (#6084)
- 3dff658 enabled
Directive.Resume
to log the fullException
(#6070) - c8b46b4 Fix faulty AddLogger in LoggingBus (#6028)
This list of changes was auto generated.
Akka.NET v1.5.0-alpha1
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. Major upgrades to Akka.Cluster.Sharding in particular.
Deprecation
Some codes and packages are being deprecated in v1.5
- Deprecated/removed Akka.DI package
Please use the newAkka.DependencyInjection
NuGet package as a replacement. Documentation can be read here - Deprecated/removed Akka.MultiNodeTestRunner package
Please use the newAkka.MultiNode.TestAdapter
NuGet package as a replacement. Documentation can be read here. - [Streams] Refactor
SetHandler(Inlet, Outlet, IanAndOutGraphStageLogic)
toSetHandlers()
Changes
Akka
- Add dual targetting to support .NET 6.0
AllAkka.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 toThreadPoolDispatcher
- Add
ValueTask
support toPipeTo
extensions - Add
CancellationToken
support toCancelable
- Fix long starting loggers crashing
ActorSystem
startup
All loggers are asynchronously started duringActorSystem
startup. A warning will be logged if a logger does not respond within the prescribedakka.logger-startup-timeout
period and will be awaited upon in a detached task until theActorSystem
is shut down. This have a side effect in that slow starting loggers might not be able to capture all log events emmited by theEventBus
until it is ready.
Akka.Cluster
- Fix
ChannelTaskScheduler
to work with Akka.Cluster, ported from 1.4 - Harden
Cluster.JoinAsync()
andCluster.JoinSeedNodesAsync()
methods - Fix
ShardedDaemonProcess
should use lease, if configured - Make
SplitBrainResolver
more tolerant to invalid node records - Enable
Heartbeat
andHearbeatRsp
message serialization and deserialization
By default,Akka.Cluster
will now use the newHeartbeat
andHartbeatRsp
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 setakka.cluster.use-legacy-heartbeat-message
to true.
Akka.Cluster.Sharding
- Make Cluster.Sharding recovery more tolerant against corrupted persistence data
- Major reorganization to Akka.Cluster.Sharding
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)
}
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 - Singleton can use
Member.AppVersion
metadata to decide its host node during hand-over
Akka.Cluster.Singleton
can useMember.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 highestAppVersion
number. You can opt-in to this behavior by settingakka.cluster.singleton.consider-app-version
to true.
Akka.Persistence.Query
Akka.Remote
- Fix typo in HOCON SSL settings. Backward compatible with the old setting names
- Treat all exceptions thrown inside
EndpointReader
message dispatch as transient, Ported from 1.4 - Fix SSL enable HOCON setting
Akka.Streams
- Allow GroupBy sub-flow to re-create closed sub-streams, backported to 1.4
- Fix ActorRef source not completing properly, backported to 1.4
- Rewrite
ActorRefSink
as aGraphStage
- Add stream cancellation cause upstream propagation, ported from 1.4
- Fix
VirtualProcessor
subscription bug, ported from 1.4 - Refactor
Sink.Ignore
signature fromTask
toTask<Done>
- Add
SourceWithContext.FromTuples()
operator` - Add
GroupedWeightedWithin
operator - Add
IAsyncEnumerable
source
Akka.TestKit
Changes:
- c948581 Update RELEASE_NOTES.md for 1.5.0-alpha1 release (#6069)
- 9acaf00 Cluster singleton should consider Member AppVersion during hand over. (#6065)
- d55f67f [Cluster] Enable HeartbeatResponse message type (#6063)
- 899c3a2 Singleton class and settings based on current Akka Typed implementation (#6050)
- 207e7b8 [SBR] Ignore reachability records for invalid nodes (#6064)
- 9410a4c Tutorial improvements (#6057)
- 03de287 Fixes log and uses cluster sharding
LeaseSettings
, if configured, in ShardedDaemonProcess (#6058) - f571e26 Fix Streams.Tests.Dsl.MergeHub_must_work_with_long_streams_when_buffer_size_is_1 (#6054)
- 411c800 Fix faulty AddLogger in LoggingBus (#6028) (#6053)
- 6f28f17 migrate project chat from Gitter to Discord (#6052)
See More
- b1eb688 Make JoinAsync and JoinSeedNodesAsync more robust by checking cluster UP status (#6033)
- 59cda86 Fix attempt, AsyncEnumerableSpec was hung (#6049)
- e9b643f Improve Akka.Actor.Cancelable (#6032)
- 0c92aac cleaned up
IAsyncEnumerable
Source to use local functions (#6045) - af513b0 Add IAsyncEnumerable Akka.Streams Source (#6044)
- 32040a3 Fix ClusterLogSpec, EventFilter does not play nice with Within (#6041)
- b21f5fa SSL Configuration Fails even EnbleSsl property is set to false (#6038)
- 4b667c6 harden
ClusterLogSpec
(#6031) - 0efdc18 Fix ClusterSpec CoordinatedShutdown (#6034)
- a626bd9 harden HubSpec duration (#6030)
- 0c9677f Add ValueTask support to PipeTo (#6025)
- 6839192 [Async TestKit] Convert Akka.Streams.Tests to async - Dsl.UnfoldResourceAsyncS...
Akka.NET v1.4.40
1.4.40 July 19 2022
Akka.NET v1.4.40 is a minor release that contains a bug fix for DotNetty SSL support.
- Akka.Remote: SSL Configuration Fails even EnbleSsl property is set to false
- Akka.Streams: Add IAsyncEnumerable Source
If you want to see the full set of changes made in Akka.NET v1.4.40, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
8 | 544 | 64 | Gregorius Soedharmo |
1 | 669 | 3 | Aaron Stannard |
1 | 123 | 26 | Ebere Abanonu |
1 | 101 | 3 | aminchenkov |
Changes
- Model-based tests for
PersistentShardCoordinator.State
by @Aaronontheweb in #5974 - Add Cluster.Sharding ActorInitializationException spec by @Arkatufus in #5999
- Fix Akka.Persistence.TCK Persistence.Oracle issue by @Arkatufus in #6006
- [BACKPORT #6038] SSL Configuration fails even EnbleSsl property is set to false by @eaba in #6043
- [BACKPORT #6044] Add IAsyncEnumerable as Akka.Streams Source by @Arkatufus in #6047
- [BACKPORT #6045] cleaned up
IAsyncEnumerable
Source to use local functions by @Arkatufus in #6048 - Update RELEASE_NOTES.md for 1.4.40 release by @Arkatufus in #6046
Full Changelog: 1.4.39...1.4.40
Akka.NET v1.4.39
1.4.39 June 1 2022
Akka.NET v1.4.39 is a minor release that contains some very important bug fixes for Akka.Remote and Akka.Cluster users.
- Akka.Cluster: Error in
SplitBrainResolver.PreStart
when usingChannelTaskScheduler
for internal-dispatcher - Akka.Cluster.Sharding: make PersistentShardCoordinator a tolerant reader - Akka.Persistence-backed sharding is more lenient when recovering state.
- Akka.Remote: Trap all
Exception
s thrown while trying to dispatch messages inAkka.Remote.EndpointReader
- any kind of exception thrown during deserialization can no longer force a disassociation to occur in Akka.Remote.
If you want to see the full set of changes made in Akka.NET v1.4.39, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 204 | 99 | Aaron Stannard |
1 | 1 | 13 | Gregorius Soedharmo |
Changes:
- 97b4bd8 added v1.4.39 release notes (#5977)
- 36bc254 Fix sharding tolerant reader (#5976)
- 0e7cd06 Trap all exception thrown while trying to dispatch messages in Akka.Remote.EnpointReader (#5971)
- 4fa7abb Allow
PersistentShardCoordinator
to tolerate duplicateShardHomeAllocated
messages (#5967) [ #5604 ] - 9260924 pass
Akka.Cluster.Cluster
intoIDowningProvider
directly (#5965) [ #5962 ]
This list of changes was auto generated.
Akka.NET v1.4.38
1.4.38 May 6 2022
Akka.NET v1.4.38 is a minor release that contains some minor bug fixes.
- Streams: Add
allowClosedSubstreamRecreation
option to GroupBy - Streams: Fix
Source.ActorRef
not completing bug - Remote: Fix typo thumbprint in
akka.remote
HOCON configuration - Cluster: Fix
ChannelTaskScheduler
to work insideAkka.Cluster
If you want to see the full set of changes made in Akka.NET v1.4.38, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
6 | 177 | 93 | Gregorius Soedharmo |
5 | 424 | 156 | Ismael Hamed |
2 | 86 | 89 | Aaron Stannard |
1 | 45 | 209 | Simon Cropp |
1 | 1 | 1 | dependabot[bot] |
Changes:
- 67f6737 Update RELEASE_NOTES.md for v1.4.38 release (#5922)
- f60f585 enable
ChannelTaskScheduler
to work inside Akka.Cluster without causing errors inside/system
actors (#5861) [ #5498 ] - 520a4af Fix typo in
akka.remote.dot-netty.ssl.certificate
(#5903) - 7cf5c96 Merge pull request #5883 from Arkatufus/cherrypick_actorref-not-completing [ #5875 ]
- 9c31d13 Backport of #5874: GroupBy fixes (#5882)
- d538a84 Fix markdownlint error
- 327be46 Avoids memory being retained for GroupBy
- a4f72e9 Fixes GroupBy does not invoke decider
- a36765b Allow GroupBy to recreate already closed substreams
- 1456237 Cancel GroupBy when all substreams cancel
See More
- 389c000 GroupBy pulls upstream when a substream materialization is waiting
- e2b7a2c Update MNTR to 1.1.1 and update build script to suit (#5867)
- f40516b Target incrementalist against v1.4 branch for v1.4
- 5233233 Fix Persistence.TCK specs (#5849)
- bba3dc3 Bump FsCheckVersion from 2.16.3 to 2.16.4 (#5724)
- 546176a move from ApprovalTests to Verify for api tests (#5846)
- 9f23e04 Add specs to test disallow-unsafe-type (#5746)
This list of changes was auto generated.
Akka.NET v1.4.37
1.4.37 April 14 2022
Akka.NET v1.4.37 is a minor release that contains some minor bug fixes.
- Persistence.Query: Change AllEvents query failure log severity from Debug to Error
- Coordination: Harden LeaseProvider instance Activator exception handling
- Akka: Make ActorSystemImpl.Abort skip the CoordinatedShutdown check
If you want to see the full set of changes made in Akka.NET v1.4.37, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 15 | 4 | Gregorius Soedharmo |
1 | 2 | 2 | dependabot[bot] |
Changes:
- 786bb9b Merge pull request #5842 from akkadotnet/dev
- a42fa87 Update RELEASE_NOTES.md for 1.4.37 release (#5841)
- 1800bdc Bump Microsoft.Data.SQLite from 5.0.11 to 6.0.4 (#5837)
- d0ec3b8 Make ActorSystemImpl.Abort skip the CoordinatedShutdown check (#5839)
- 8fec4ba Fix LeaseProvider instance Activator exception handling (#5838)
- 37e6331 Change the failure log inside
AllEventPublisher
from Debug to Error (#5835)
This list of changes was auto generated.
Akka.NET v1.4.36
1.4.36 April 4 2022
Akka.NET v1.4.36 is a minor release that contains some bug fixes. Most of the changes have been aimed at improving our web documentation and code cleanup to modernize some of our code.
Bug fixes:
- Akka: Fix CoordinatedShutdown memory leak
- Akka: Fix TcpConnection error handling and death pact de-registration
If you want to see the full set of changes made in Akka.NET v1.4.36, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
5 | 274 | 33 | Gregorius Soedharmo |
4 | 371 | 6 | Ebere Abanonu |
3 | 9 | 3 | Aaron Stannard |
1 | 34 | 38 | Ismael Hamed |
1 | 2 | 3 | Adrian Leonhard |
Changes:
- 85d7b89 Merge pull request #5823 from Arkatufus/master
- 9f7a7a7 Merge remote-tracking branch 'upstream/master'
- 33d805c Merge branch 'dev'
- da0f734 Be more explicit that a node is shutting down as it was marked as DOWN (#5821)
- 711c284 Merge branch 'dev'
- 161c9d5 Revert changes that are unrelated to the memory leak (#5822)
- 9c29c84 Update RELEASE_NOTES.md for 1.4.36 release (#5820)
- 13eea74 Couple of fixes for the TcpConnection (#5817)
- 3ee032d Fix leaky coordinated shutdown (#5816)
- 0309498 Bump Hyperion to 0.12.2 (#5805)
See More
- ab332ea [DOCS]: Add
Examples
section to Akka.NET Doc (#5739) - b365c06 Add
Member Roles
doc (#5742) - 9e05894 Add documentation on how to override serializer ids. (#5749)
- 0c85653 Fix MSBuild does not copy xunit.runner dlls correctly (#5747)
- 6d3d91f marked
EventBusUnsubscriber
messages asINoSerializationVerificationNeeded
(#5743) - b4b390d cleanup XUnit TestKit output logger (#5741)
- 93a3d7e Lock cspell on version
5.18.5
(#5744) - 4e35c2a Fix spelling (#5745)
- ef6718e [DI] DI fails to throw an exception when DI tried to create an actor with missing constructor parameter (#5735)
- 5ef69e9 Update PersistAsync to match docs. (#5736)
- a18c246 v1.4.36 placeholder for nightlies (#5732)
This list of changes was auto generated.