Changelog History
Page 1
-
v1.5.0-beta1 Changes
April 20, 2022๐ Placeholder for first beta release of Akka.NET v1.5
-
v1.5.0-alpha2 Changes
October 17, 2022๐ Akka.NET v1.5.0-alpha2 is a maintenance release for Akka.NET v1.5 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
- 0๏ธโฃ 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.5.0-alpha2.
Other Features and Improvements
- ๐ฒ DData: Suppress gossip message from showing up in debug log unless verbose debug logging is turned on
- ๐ง TestKit: TestKit automatically injects the default TestKit default configuration if an ActorSystem is passed into its constructor
- Sharding: Added a new
GetEntityLocation
query message to retrieve an entity address location in the shard region - ๐ Sharding: Fixed
GetEntityLocation
uses wrong actor path - ๐โโ 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
- ๐ remove delegate allocation from
-
v1.5.0-alpha1 Changes
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 new
Akka.DependencyInjection
NuGet package as a replacement. Documentation can be read here - ๐ฆ Deprecated/removed Akka.MultiNodeTestRunner package
Please use the new
Akka.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
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 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 0๏ธโฃ 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 theddata
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 }
0๏ธโฃ 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 theShardCoordinator
'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-overAkka.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
- ๐ฆ Deprecated/removed Akka.DI package
Please use the new
-
v1.4.37 Changes
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] -
v1.4.36 Changes
April 04, 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 -
v1.4.35 Changes
March 18, 2022๐ Akka.NET v1.4.35 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: Fixed IActorRef leak inside EventStream
- ๐ Akka: Fixed ActorSystemSetup.And forgetting registered types
- ๐ Akka.Persistence.Query.Sql: Fixed Query PersistenceIds query bug
- Akka.Streams: Add MapMaterializedValue for SourceWithContext and FlowWithContext
๐ If you want to see the full set of changes made in Akka.NET v1.4.35, click here.
COMMITS LOC+ LOC- AUTHOR 6 2178 174 Aaron Stannard 2 43 33 Gregorius Soedharmo 1 71 19 Ismael Hamed 1 1 1 dependabot[bot] -
v1.4.34 Changes
February 14, 2022๐ Akka.NET v1.4.34 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: Added support to pass a state object into CircuitBreaker to reduce allocations
- ๐ Akka.DistributedData: ORSet merge operation performance improvement
- Akka.Streams: FlowWithContext generic type parameters have been reordered to make them easier to read
๐ Improvements:
๐ If you want to see the full set of changes made in Akka.NET v1.4.34, click here.
COMMITS LOC+ LOC- AUTHOR 12 1177 718 Ebere Abanonu 6 192 47 Gregorius Soedharmo 3 255 167 Ismael Hamed 1 3 0 Aaron Stannard 1 126 10 Drew -
v1.4.33 Changes
January 19, 2022๐ Akka.NET v1.4.33 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. The most important bug fix is the actor Props memory leak when actors are cached inside Akka.Remote.
- Akka: Fix memory leak bug within actor Props
- ๐ง Akka: Fix ChannelExecutor configuration backward compatibility bug
- โ Akka.TestKit: Fix ExpectAsync detached Task bug
- DistributedPubSub: Fix DeadLetter suppression for topics with no subscribers
๐ If you want to see the full set of changes made in Akka.NET v1.4.33, click here.
COMMITS LOC+ LOC- AUTHOR 63 1264 1052 Ebere Abanonu 9 221 27 Brah McDude 8 2537 24 Gregorius Soedharmo 2 4 1 Aaron Stannard 1 2 2 ignobilis -
v1.4.32 Changes
December 20, 2021๐ Akka.NET v1.4.32 is a minor release that contains some API improvements. Most of the changes have been aimed at improving our web documentation and code cleanup to modernize some of our code. One big improvement in this version release is the Hyperion serialization update.
๐ Hyperion 0.12.0 introduces a new deserialization security mechanism to allow users to selectively filter allowed types during deserialization to prevent deserialization of untrusted data described here. This new feature is exposed in Akka.NET in HOCON through the new
akka.actor.serialization-settings.hyperion.allowed-types
settings or programmatically through the newWithTypeFilter
method in theHyperionSerializerSetup
class.The simplest way to programmatically describe the type filter is to use the convenience class
TypeFilterBuilder
:var typeFilter = TypeFilterBuilder.Create() .Include<AllowedClassA>() .Include<AllowedClassB>() .Build(); var setup = HyperionSerializerSetup.Default .WithTypeFilter(typeFilter);
You can also create your own implementation of
ITypeFilter
and pass an instance of it into theWithTypeFilter
method.๐ For complete documentation, please read the Hyperion readme on filtering types for secure deserialization.
- Akka.Streams: Added Flow.LazyInitAsync and Sink.LazyInitSink to replace Sink.LazyInit
- ๐ Akka.Serialization.Hyperion: Implement the new ITypeFilter security feature
๐ If you want to see the full set of changes made in Akka.NET v1.4.32, click here.
COMMITS LOC+ LOC- AUTHOR 11 1752 511 Aaron Stannard 8 1433 534 Gregorius Soedharmo 3 754 222 Ismael Hamed 2 3 6 Brah McDude 2 227 124 Ebere Abanonu 1 331 331 Sean Killeen 1 1 1 TangkasOka -
v1.4.31 Changes
December 20, 2021๐ Akka.NET v1.4.30 is a minor release that contains some bug fixes.
๐ Akka.NET v1.4.30 contained a breaking change that broke binary compatibility with all Akka.DI plugins. ๐ Even though those plugins are deprecated that change is not compatible with our SemVer standards โช and needed to be reverted. We regret the error.
๐ Bug fixes:
COMMITS LOC+ LOC- AUTHOR 1 9 2 Gregorius Soedharmo