Releases: akkadotnet/akka.net
Akka.NET v1.4.28
1.4.28 November 10 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.28 is a minor release that contains some enhancements for Akka.Streams and some bug fixes.
New Akka.Streams Stages
Akka.NET v1.4.28 includes two new Akka.Streams stages:
Source.Never
- a utility stage that never emits any elements, never completes, and never fails. Designed primarily for unit testing.Flow.WireTap
- theWireTap
stage attaches a givenSink
to aFlow
without affecting any of the upstream or downstream elements. This stage is designed for performance monitoring and instrumentation of Akka.Streams graphs.
In addition to these, here are some other changes introduced Akka.NET v1.4.28:
- Akka.Streams:
Source
that flattens aTask
source and keeps the materialized value - Akka.Streams: made
GraphStageLogic.LogSource
virtual and change defaultStageLogic
LogSource
- Akka.IO:
UdpListener
Responds IPv6 Bound message with IPv4 Bind message - Akka.MultiNodeTestRunner: now runs on Linux and as a
dotnet test
package - we will keep you posted on this, as we're still working on getting Rider / VS Code / Visual Studio debugger-attached support to work correctly. - Akka.Persistence.Sql.Common: Cancel
DBCommand
after finish reading events by PersistenceId - massive performance fix for Akka.Persistence with many log entries on SQL-based journals. - Akka.Actor:
DefaultResizer
does not reisize whenReceiveAsync
is used
If you want to see the full set of changes made in Akka.NET v1.4.28, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
16 | 2707 | 1911 | Sean Killeen |
8 | 1088 | 28 | Ismael Hamed |
6 | 501 | 261 | Gregorius Soedharmo |
5 | 8 | 8 | dependabot[bot] |
4 | 36 | 86 | Aaron Stannard |
1 | 1 | 0 | Jarl Sveinung Flø Rasmussen |
Special thanks for @SeanKilleen for contributing extensive Markdown linting and automated CI checks for that to our documentation! #5312
Changes:
- 6157f96 Merge pull request #5378 from akkadotnet/dev
- ef8536a Added v1.4.28 release notes (#5377)
- 7ba59b4 adding NuGet logo and README support (#5183)
- 9c06864 add .NET 6 SDK support (#5373)
- 783665e Bump NUnit3TestAdapter from 4.0.0 to 4.1.0 (#5369)
- 6a2c757 Sets InternalsVisibleTo for Akka.Management.Cluster.Http (#5363)
- 28246c4 Ported WireTap combinator (#5357)
- 7732fc7 made
GraphStageLogic.LogSource
virtual and change defaultStageLogic
LogSource
(#5360) - 048ea84 Add spec to check that Akka.Cluster.Metrics can be started automatically (#5359)
- fd458b6 Bump Fsharp.Core from 5.0.2 to 6.0.1 (#5358)
See More
- db28aa3 Brings back StreamTcpException static field Instance (#5356)
- 59ca115 Add a more comprehensive non-breaking user feedback for misconfigured discovery settings (#5353)
- d2acaab Bump Microsoft.NET.Test.Sdk from 16.11.0 to 17.0.0 (#5348)
- 838b6a3 Fix Udp.Bind always returns Udp.Bound with IPv6 endpoint (#5349)
- ef057f7 Markdown linting: build steps and last fixes (#5345)
- 855208f Markdown linting: Headings / Headers (#5343)
- 77b7b50 Markdown linting: Unordered Lists + MD019 for headers (#5330)
- e854f0c Markdown linting: Convert emphasis to headings (#5342)
- 312fd26 Markdown linting: Whitespace (#5332)
- a274a89 Small clarification of recovery strategy in config (#5340)
- 7ab3727 Fix wrong placeholder for nightlies (#5341)
- cd93348 Source that flattens a task source and keeps the materialized value (#5338)
- c072243 Fix SubSinkInlet.SetHandler should expect an IInHandler instead of InHandler (#5337)
- c490553 Added Source.Never (#5339)
- cf6d58e Markdown linting: Blockquotes (#5320)
- 9270abc Bump Akka.MultiNode.TestAdapter from 1.0.0-beta2 to 1.0.0 (#5335)
- 347b2da Fix DefaultResizer for suspended mailboxes (ReceiveAsync) (#5333)
- 72798d6 [MNTR] Migrate to standalone MNTR (#5307)
- fc41ef4 Make DisabledBufferPool as the default buffer pool implementation for UDP (#5331)
- 6cb69d2 Spaces in OLs (#5323)
- ab8beb0 Markdown linting: HTML in markdown (#5324)
- 8853504 Add language to markdown code blocks (#5322)
- 7346dec Markdown linting: rest of the blank lines rules (#5319)
- 514c007 Markdown linting: blank lines around fences (MD031) (#5317)
- cb28679 Markdown linting: Brackets around bare URLs (#5316)
- e8001dc Hard tabs to 4 spaces (#5315)
- 175eabd Markdown linting: Blank lines around headers (MD022) (#5314)
- 05b8fe4 Markdown linting: "atx" and "atx-closed" categories (#5313)
- fb381b3 Add spellcheck for docs (#5309)
- 0ea1fab Cancel DBCommand after finish reading events by PersistenceId (#5311)
- 550a010 Bump Microsoft.Data.SQLite from 5.0.10 to 5.0.11 (#5308)
- 4cbe61d Added v1.4.28 placeholder for nightlies (#5306)
This list of changes was auto generated.
Akka.NET v1.4.27
1.4.27 October 11 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.27 is a small release that contains some major performance improvements for Akka.Remote.
Performance Fixes
In RemoteActorRefProvider address paring, caching and resolving improvements Akka.NET contributor @Zetanova introduced some major changes that make the entire ActorPath
class much more reusable and more parse-efficient.
Our last major round of Akka.NET performance improvements in Akka.NET v1.4.25 produced the following:
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 130634, 1531.54
5, 1000000, 246975, 4049.20
10, 2000000, 244499, 8180.16
15, 3000000, 244978, 12246.39
20, 4000000, 245159, 16316.37
25, 5000000, 243333, 20548.09
30, 6000000, 241644, 24830.55
In Akka.NET v1.4.27 those numbers now look like:
OSVersion: Microsoft Windows NT 6.2.9200.
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 105043, 1904.29
5, 1000000, 255494, 3914.73
10, 2000000, 291843, 6853.30
15, 3000000, 291291, 10299.75
20, 4000000, 286513, 13961.68
25, 5000000, 292569, 17090.64
30, 6000000, 281492, 21315.35
To put these numbers in comparison, here's what Akka.NET's performance looked like as of v1.4.0:
Num clients (actors) Total [msg] Msgs/sec Total [ms]
1 200000 69736 2868.60
5 1000000 141243 7080.98
10 2000000 136771 14623.27
15 3000000 38190 78556.49
20 4000000 32401 123454.60
25 5000000 33341 149967.08
30 6000000 126093 47584.92
We've made Akka.Remote consistently faster, more predictable, and reduced total memory consumption significantly in the process.
You can see the full set of changes introduced in Akka.NET v1.4.27 here
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 89 | 8 | Aaron Stannard |
1 | 856 | 519 | Andreas Dirnberger |
1 | 3 | 4 | Vadym Artemchuk |
1 | 261 | 233 | Gregorius Soedharmo |
1 | 1 | 1 | dependabot[bot] |
Changes:
- 193c74e Merge pull request #5305 from akkadotnet/dev
- e575a8a Akka.NET v1.4.27 Release Notes (#5304)
- 029d007 Clean-up MNTR for standalone migration (#5302)
- dbe76a2 Bump Hyperion from 0.11.1 to 0.11.2 (#5301)
- a091c2a Added telemetry injection point for
Ask<T>
(#5297) - 01c35a9 RemoteActorRefProvider address paring, caching and resolving improvments (#5273)
- e657820 SmallestMailboxPool clarification (#5295)
- 7a5caa2 Update RELEASE_NOTES.md
This list of changes was auto generated.
Akka.NET v1.4.26
1.4.26 September 28 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.26 is a very small release that addresses one wire format regression introduced in Akka.NET v1.4.20.
Bug Fixes and Improvements
- Akka.Remote / Akka.Persistence: PrimitiveSerializers manifest backwards compatibility problem - this could cause regressions when upgrading to Akka.NET v1.4.20 and later. We have resolved this issue in Akka.NET v1.4.26. Please see our Akka.NET v1.4.26 upgrade advisory for details.
- Akka.DistributedData.LightningDb: Revert #5180, switching back to original LightningDB packages
You can see the full set of changes introduced in Akka.NET v1.4.26 here
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
4 | 99 | 96 | Gregorius Soedharmo |
3 | 79 | 5 | Aaron Stannard |
1 | 1 | 1 | dependabot[bot] |
Changes:
- 2f92a5a Merge pull request #5294 from akkadotnet/dev
- 46604f0 added v1.4.26 release notes (#5293)
- 8f45d70 Added HOCON comment for
akka.actor.serialization-settings.primitive.use-legacy-behavior
(#5292) - 302e3cb Change PrimitiveSerializer compatibility switch setting name from
use-neutral-primitives
touse-legacy-behavior
for less ambiguity (#5290) - dc44359 Added Akka.NET v1.4 upgrade advisories area to website (#5289)
- eb955c2 Modify MNTR to work with the new MNTR package (#5288)
- 084156e Revert #5180, switching back to original LightningDB packages. (#5286)
- 6101fea Add backward compatibility to PrimitiveSerializers (#5280)
- 708b539 Bump Microsoft.Data.SQLite from 5.0.9 to 5.0.10 (#5277)
- ed3807d Update RELEASE_NOTES.md
This list of changes was auto generated.
Akka.NET v1.4.25
1.4.25 September 08 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.25 includes some significant performance improvements for Akka.Remote and a number of important bug fixes and improvements.
Bug Fixes and Improvements
- Akka.IO.Tcp: connecting to an unreachable DnsEndpoint never times out
- Akka.Actor: need to enforce
stdout-loglevel = off
all the way through ActorSystem lifecycle - Akka.Actor:
Ask
should push unhandled answers into deadletter - Akka.Routing: Make Router.Route` virtual
- Akka.Actor: Improve performance on
IActorRef.Child
API - signficantly improves performance of many Akka.NET functions, but includes a public API change onIActorRef
that is source compatible but not necessarily binary-compatible.IActorRef GetChild(System.Collections.Generic.IEnumerable<string> name)
is nowIActorRef GetChild(System.Collections.Generic.IReadOnlyList<string> name)
. This API is almost never called directly by user code (it's almost always called via the internals of theActorSystem
when resolvingActorSelection
s or remote messages) so this change should be safe. - Akka.Actor:
IsNobody
throws NRE - Akka.Cluster.Tools: singleton fix cleanup of overdue _removed members
- Akka.DistributedData: ddata exclude
Exiting
members in Read/WriteMajorityPlus
Performance Improvements
Using our standard RemotePingPong
benchmark, the difference between v1.4.24 and v1.4.25 is significant:
v1.4.24
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 96994, 2062.08
5, 1000000, 194818, 5133.93
10, 2000000, 198966, 10052.93
15, 3000000, 199455, 15041.56
20, 4000000, 198177, 20184.53
25, 5000000, 197613, 25302.80
30, 6000000, 197349, 30403.82
v1.4.25
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 130634, 1531.54
5, 1000000, 246975, 4049.20
10, 2000000, 244499, 8180.16
15, 3000000, 244978, 12246.39
20, 4000000, 245159, 16316.37
25, 5000000, 243333, 20548.09
30, 6000000, 241644, 24830.55
This represents a 24% overall throughput improvement in Akka.Remote across the board. We have additional PRs staged that should get aggregate performance improvements above 40% for Akka.Remote over v1.4.24 but they didn't make it into the Akka.NET v1.4.25 release.
You can see the full set of changes introduced in Akka.NET v1.4.25 here
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
32 | 1301 | 400 | Aaron Stannard |
4 | 358 | 184 | Andreas Dirnberger |
3 | 414 | 149 | Gregorius Soedharmo |
3 | 3 | 3 | dependabot[bot] |
2 | 43 | 10 | zbynek001 |
1 | 14 | 13 | tometchy |
1 | 139 | 3 | carlcamilleri |
Changes:
- 42061a3 Merge pull request #5275 from akkadotnet/dev
- f12e0b0 Akka.NET v1.4.25 Release Notes (#5274)
- 024c684 obsolete Akka.Actor.Failure and use and improve Akka.Actor.Status (#5226)
- 8279ed4 Make sure stdout-loglevel setting is honored through the whole actor system lifecycle (#5251)
- 8f168fc experimenting with RemoteActorRefProvider address resolution performance (#5228)
- 8a42eda Fix Dns.Resolve issue by using ContinueWith and AggregateException.Flatten (#5260)
- 48a704c Ask should push unhandled answers into deadletter 2 (#5259)
- 1f779fe disable Actor_PipeTo_should_not_be_delayed_by_async_receive (#5271)
- 8d5de94 harden SqliteCurrentAllEventsSpec (#5270)
- 2a3390c harden
ClusterShardingLeavingSpec
(#5164)
See More
- b1c9643 harden UnfoldFlowSpec (#5269)
- 6c46252 harden Bugfix4360 (#5268)
- 0481fc8 harden GraphStageTimersSpec (#5267)
- e692f5f added
IActorRef
benchmarks (#5266) - c232441 harden ManyRecoveriesSpec (#5264)
- 1b2f4c7 hardened more UnflowFlowSpec (#5263)
- a0398a8 hardened UnfoldFlowSpec (#5262)
- eb11339 skip racy substream spec (#5258)
- f6e2ab9 Bump FsCheckVersion from 2.16.0 to 2.16.3 (#5255)
- 850bdb1 disabled Akka.Persistence.TCK.Query.ReadJournal_should_deallocate_AllPersistenceIds_publisher_when_the_last_subscriber_left (#5257)
- b39bce3 harden Bugfix4360Spec (#5256)
- be057ab Revert "Ask should push unhandled answers into deadletter (#5221)" (#5254)
- f09a227 pumped up the LruCache benchmark invocation count to get more accurate numbers (#5250)
- e4c729f added .NET 5 support to microbenchmarks (#5249)
- cac54cb Ask should push unhandled answers into deadletter (#5221)
- 1e889f3 added
LruBoundedCache
benchmarks (#5248) - c3b6880 added LRU cache support to inbound Akka.Remote IActorRef resolution (#5240)
- d25db5d Improve performance on
IActorRef.Child
API (#5242) - 4c494fe improveme child lookup performance (#5241)
- f0c0ebf added benchmark for
VirtualPathContainer
resolution (#5244) - 77ed55d fixed baseline benchmark (#5243)
- 682ca13 adding
GetChild
benchmark (#5239) - 426111f Make
Router.Route
virtual (#5238) - 8c800cf Refactor AdaptiveLoadBalancingRoutingLogic to use IClusterMetricsRoutingLogic instead (#5237)
- 1c183fa Take Akka.Persistence.Sql.Common out of beta (#5236)
- 243d257 Benchmark to test SingleRequestResponseToRemoteEntity with a local proxy (#5232)
- 3df4b90 singleton fix cleanup of overdue _removed members (#5229)
- 0abb1f3 Fix example configuration (#5233)
- a23ebf0 Exclude exiting members in Read/Write MajorityPlus (migrated from akka/akka#30328) (#5227)
- bd695c1 Bump FsCheckVersion from 2.15.3 to 2.16.0 (#5198)
- e96833b fix IsNobody for actorref-mock and add unit test for it. (#5220)
- e38295b cached ShardIds generated by HashCodeMessageExtractor (#5216)
- 6a3c04a added hashcode message extractor benchmarks (#5215)
- bbbfd0d Bump Microsoft.NET.Test.Sdk from 16.10.0 to 16.11.0 (#5200)
- bc004ae Akka.Cluster.Sharding performance benchmarks (#5209)
- 8093f41 Update RELEASE_NOTES.md
- a00b43e Added v1.4.25 placeholder
This list of changes was auto generated.
Akka.NET v1.4.24
1.4.24 August 17 2021
Maintenance Release for Akka.NET 1.4
Bug Fixes and Improvements
- Akka: Make
Router
open to extensions - Akka: Allow null response to
Ask<T>
- Akka.Cluster: Fix cluster startup race condition
- Akka.Streams: Fix RestartFlow bug
- Akka.Persistence.Sql: Implement TimestampProvider in BatchingSqlJournal
- Akka.Serialization.Hyperion: Bump Hyperion version from 0.11.0 to 0.11.1
- Akka.Serialization.Hyperion: Add Hyperion unsafe type filtering security feature
You can see the full set of changes introduced in Akka.NET v1.4.24 here
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
5 | 360 | 200 | Aaron Stannard |
3 | 4 | 4 | dependabot[bot] |
1 | 548 | 333 | Arjen Smits |
1 | 42 | 19 | Martijn Schoemaker |
1 | 26 | 27 | Andreas Dirnberger |
1 | 171 | 27 | Gregorius Soedharmo |
Changes:
- 49b2afc v1.4.24 Release
- 1d065a9 Merge branch 'dev'
- 10ac4e7 Update RELEASE_NOTES.md for 1.4.24 release (#5211)
- 3c15cdc fixed NRE inside ClusterSingletonManager (#5210)
- 9364bdc Add dangerous type blacklist feature to Akka.Serialization.Hyperion (#5208)
- cfa1f7f Bump Hyperion from 0.11.0 to 0.11.1 (#5206)
- dd62956 close #5204 - allow
null
response toAsk<T>
operation (#5205) - d37fdbb Bugfix RestartFlow issue; #5165 (#5181)
- 2a8278b Use TimestampProvider in BatchingSqlJournal (#5192)
- 5646f96 make
Router
open to extension (#5201)
See More
- d201452 added reproduction for DU serialization (#5196) [ #5194 ]
- 8c4f29f fix cluster startup race (#5185)
- 5c60c34 re-enabled Akka.FSharp.Tests on .NET Core 3.1, .NET 5.0 (#5195)
- d146387 Bump BenchmarkDotNet from 0.13.0 to 0.13.1 (#5193)
- afc5548 Bump Microsoft.Data.SQLite from 5.0.8 to 5.0.9 (#5191)
- 618027c Added v1.4.24 placeholder
This list of changes was auto generated.
Akka.NET v1.4.23
1.4.23 August 09 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.23 is designed to patch an issue that occurs on Linux machines using Akka.Cluster.Sharding with akka.cluster.sharding.state-store-mode=ddata
and akka.cluster.sharding.remember-entities=on
: "System.DllNotFoundException: Unable to load shared library 'lmdb' or one of its dependencies"
In Akka.NET v1.4.21 we added built-in support for Akka.DistributedData.LightningDb for use with the remember-entities
setting, but we never received any reports about this issue until shortly after v1.4.22 was released. Fundamentally, the problem was that our downstream dependency, Lightning.NET, doesn't include any of the necessary Linux native binaries in their distributions currently. So in the meantime, we've published our own "vendored" distribution of Lightning.NET to NuGet until a new official one is released that includes these binaries.
There are some other small fixes included in Akka.NET v1.4.23 and you can read about them here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
8 | 136 | 2803 | Aaron Stannard |
2 | 61 | 3 | Gregorius Soedharmo |
Changes:
- be40344 Merge pull request #5189 from akkadotnet/dev
- d572fae added v1.4.23 release notes (#5188)
- 6b4a913 use
Failure
to programmatically cancelAsk
(#5187) [ #3019 ] - 0673dc3 move Akka.DistributedData.LightningDb onto vendored package (#5180)
- 0bd23c9 fix MNTR local build for .NET 5 (#5177)
- 7997b58 Add remember entities storage type documentation (#5179)
- f58c5fe Revert "Remove LightningDB reference in cluster sharding, make ddata non-durable as default (#5175)" (#5178)
- c851ef4 Remove LightningDB reference in cluster sharding, make ddata non-durable as default (#5175)
- 5a7ece8 Pruned RELEASE_NOTES.md (#5176)
- b7dd4b7 fix RemoteActorRefProvider.CreateRemoteRef signature to return IInternalActorRef (#5173)
See More
- 00a8517 Merge pull request #5172 from Aaronontheweb/remote/RemoteActorRefProvider-cleanup
- 7f751f3 Added v1.4.23 placeholder
This list of changes was auto generated.
Akka.NET v1.4.22
1.4.22 August 05 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.22 is a fairly large release that includes an assortment of performance and bug fixes.
Performance Fixes
Akka.NET v1.4.22 includes a significant performance improvement for Ask<T>
, which now requires 1 internal await
operation instead of 3:
Before
Method | Iterations | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|
RequestResponseActorSelection | 10000 | 83.313 ms | 0.7553 ms | 0.7065 ms | 4666.6667 | - | - | 19 MB |
CreateActorSelection | 10000 | 5.572 ms | 0.1066 ms | 0.1140 ms | 953.1250 | - | - | 4 MB |
After
Method | Iterations | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|
RequestResponseActorSelection | 10000 | 71.216 ms | 0.9885 ms | 0.9246 ms | 4285.7143 | - | - | 17 MB |
CreateActorSelection | 10000 | 5.462 ms | 0.0495 ms | 0.0439 ms | 953.1250 | - | - | 4 MB |
Bug Fixes and Improvements
- Akka: Use ranged nuget versioning for Newtonsoft.Json
- Akka: Pipe of Canceled Tasks
- Akka: CircuitBreaker's Open state should return a faulted Task instead of throwing
- Akka.Remote: Can DotNetty socket exception include information about the address?
- Akka.Remote: log full exception upon deserialization failure
- Akka.Cluster: SBR fix & update
- Akka.Streams: Restart Source|Flow|Sink: Configurable stream restart deadline
- Akka.DistributedData: ddata replicator stops but doesn't look like it can be restarted easily
- Akka.DistributedData: ddata ReadMajorityPlus and WriteMajorityPlus
- Akka.DistributedData: DData Max-Delta-Elements may not be fully honoured
You can see the full set of changes introduced in Akka.NET v1.4.22 here
Akka.Cluster.Sharding.RepairTool
In addition to the work done on Akka.NET itself, we've also created a separate tool for cleaning up any left-over data in the event of an Akka.Cluster.Sharding cluster running with akka.cluster.sharding.state-store-mode=persistence
was terminated abruptly before it had a chance to cleanup.
We've added documentation to the Akka.NET website that explains how to use this tool here: https://getakka.net/articles/clustering/cluster-sharding.html#cleaning-up-akkapersistence-shard-state
And the tool itself has documentation here: https://github.com/petabridge/Akka.Cluster.Sharding.RepairTool
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
16 | 1254 | 160 | Gregorius Soedharmo |
7 | 104 | 83 | Aaron Stannard |
5 | 8 | 8 | dependabot[bot] |
4 | 876 | 302 | Ismael Hamed |
2 | 3942 | 716 | zbynek001 |
2 | 17 | 3 | Andreas Dirnberger |
1 | 187 | 2 | andyfurnival |
1 | 110 | 5 | Igor Fedchenko |
Akka.NET v1.4.21
1.4.21 June 16 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.21 is a significant release that includes major performance improvements, bug fixes, and a major update to the Akka.DependencyInjection NuGet package.
Performance Improvements
Akka.NET v1.4.21 includes some major performance fixes and improvements:
Ask
is now ~10% fasterMurmurHash
is 33% faster and allocates 0 memory - used heavily in DData, Cluster Sharding, and Consistent Hash RoutersActorPath.Parse
went from 1672 ns/op to 527 ns/op - a 68% improvement in throughput and a 50% reduction in memory. See #5039 and #5068.- Akka.Remote: remove
ActorPath.ToString
call fromResolveActorRefWithLocalAddress
- Important: Revert
ThreadPool.SetMinThreads(0,0)
- based on the input from users on "Akka.NET v1.4.19: ChannelExecutor performance data"
Our observed performance numbers for Akka.Remote show a significant increase in performance for v1.4.21 over v1.4.20:
Before
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 109
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 113379, 1764.56
5, 1000000, 186429, 5364.05
10, 2000000, 185340, 10791.11
15, 3000000, 183218, 16374.06
20, 4000000, 179824, 22244.63
25, 5000000, 182716, 27365.89
30, 6000000, 182039, 32960.61
After
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 109770, 1822.14
5, 1000000, 192902, 5184.79
10, 2000000, 191663, 10435.53
15, 3000000, 191339, 15679.11
20, 4000000, 192725, 20755.78
25, 5000000, 189754, 26350.14
30, 6000000, 189772, 31617.20
N.B. these after numbers don't benefit from the performance benefits we observed in v1.4.20 when we invoked
ThreadPool.SetMinThreads(0,0)
, which makes them even more impressive.
Akka.DependencyInjection Updates
We had one major issue we implemented in v1.4.21 for Akka.DependencyInjection: Abstraction of ServiceProvider
, Improving Akka.DependencyInjection
What this change did was:
- Deprecate the
Akka.DependencyInjection.ServiceProvider
class in favor of theAkka.DependencyInjection.DependencyResolver
class - to avoid namespace collision with Microsoft.Extensions.DependencyInjection.ServiceProvider; - Deprecates the
Akka.DependencyInjection.ServiceProviderSetup
class in favor of theAkka.DependencyInjection.DependencyResolverSetup
class for consistency reasons; Akka.DependencyInjection.DependencyResolver
now takes an input of typeIDependencyResolver
, which allows users to abstract away theIServiceProvider
and mock / replace it during unit testing; and- Added some non-generic
Props
methods for dynamically spawning actors via DI.
All of these changes are backwards-compatible with v1.4.20 and earlier - and the deprecation warnings will appear in your code when you upgrade. If you run into any issues upgrading to Akka.DependencyInjection v1.4.21 please reply on this thread!
Other Changes and Fixes
- Akka.Streams: A couple of fixes affecting the
FileSubscriber
- Akka.DistributedData: memory leak when recovering events from LMDB data store
- Akka.DistributedData: port
VectorClock
performance optimizations toVersionVector
and similar types
To see the full set of fixes in Akka.NET v1.4.21, please see the milestone on Github.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
5 | 34 | 24 | Aaron Stannard |
4 | 196 | 77 | Gregorius Soedharmo |
3 | 3 | 3 | dependabot[bot] |
1 | 2 | 2 | Wessel Kranenborg |
1 | 1 | 1 | Martijn Schoemaker |
Changes:
- a8347c5 Merge pull request #5096 from akkadotnet/dev
- 5c9f8a7 v1.4.21 final release notes (#5095)
- 5d557d0 Bump Microsoft.NET.Test.Sdk from 16.9.4 to 16.10.0 (#5041)
- fa5ca50 Add failure handling for BatchingSqlJournal SelectCurrentPersistenceIds message batching (#5094)
- 0210e21 Fix GSet elements needs to be sorted (#5093)
- 456d795 TestKit ReceiveWhile did not insert last inspected message properly. (#5092)
- c485d9e cleaned up internal ActorCell and TestKit methods (#5091)
- dfd7925 Return
T
from `IDependencyResolver.GetService() (#5087) [ #5086 ] - 6a7373f Fix Akka.Remote serialization exception bubbling and messages (#5072)
- 35b1bb5 added FQDN reproduction for
ActorPath.Parse
(#5084) [ #5083 ]
See More
- cf34e37 Bump Microsoft.Data.SQLite from 5.0.6 to 5.0.7 (#5081)
- 8d13c3d Bump NUnit3TestAdapter from 3.17.0 to 4.0.0 (#5079)
- 8565eaa Fix documentation flaw for "Forward" (#5078)
- 90afdb7 Use TimestampProvider in QueryExecutor.InsertABatchAsync, fixes #5076 (#5077)
- 16fef39 Akka.Coordination: minor cleanup (#5074)
- 95cdfac v1.4.21-beta1 Release Notes (#5071)
- b1a9aa6 eliminate Lazy from
Address
(#5068) - 4bd3ef9 Remove
ThreadPool.SetMinThreads(0,0)
mention from dispatchers documentation (#5069) - 15492d0 Reduced allocations around
ActorCell
andTask
handling (#5053) - 2715c36 Revert
ThreadPool.SetMinThreads(0,0)
(#5059) - 1bec20a Fix DData infinite status/gossip round (#5056)
- 8982b64 remove ISSUE_TEMPLATE.md (#5057)
- 83426ae fixed incorrect deprecation message (#5054)
- f6da797 Bring UnfoldResourceSourceAsync up-to-date (#5052)
- 566dbe3 Removed
StringBuilder
allocation fromBase64Encoding
(#5051) - c21289e Remove
Uri.TryParse
and replace withSpan<char>
parsing (#5039) [ #4814 ] - 98ef574 changed job configuration for ActorMemoryFootprintBenchmark (#5048)
- 1938a20 added dedicated footprint for measuring Actor memory footprint (#5047)
- 73d19af Add ActorSystemSetup setup (#5045)
- 410066f [MNTR] fix test dll loading error (#5044)
- c663bc2 Abstraction of ServiceProvider, Improving Akka.DependencyInjection (#4814)
- 99afc0e Bump Google.Protobuf from 3.17.1 to 3.17.2 (#5040)
- 3dc2e35 Bump Google.Protobuf from 3.17.0 to 3.17.1 (#5036)
- b888b40 A couple of fixes affecting the FileSubscriber (#5035)
- 431b69e Turn on DData related ClusterSharding MNTR specs (#4926)
- 3f8fa29 Improve MurmurHash string hash memory footprint (#5028)
- 6f5b003 remove
ActorPath.ToString
call fromResolveActorRefWithLocalAddress
(#5034) - 99be70b Consolidate intercept (#5033)
- 61d08b7 Fix a potential race condition in FileSubscriber (#5032)
- 5294e9a added
FastHash
benchmark (#5029) - aa8a3de adding ORSet benchmarks (#4990)
- b5f6552 Bump Google.Protobuf from 3.16.0 to 3.1...
Akka.NET v1.4.21-beta1
1.4.21-beta1 June 03 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.21 is a significant release that includes major performance improvements, bug fixes, and a major update to the Akka.DependencyInjection NuGet package.
Performance Improvements
Akka.NET v1.4.21 includes some major performance fixes and improvements:
Ask
is now ~10% fasterMurmurHash
is 33% faster and allocates 0 memory - used heavily in DData, Cluster Sharding, and Consistent Hash RoutersActorPath.Parse
went from 1672 ns/op to 527 ns/op - a 68% improvement in throughput and a 50% reduction in memory. See #5039 and #5068.- Akka.Remote: remove
ActorPath.ToString
call fromResolveActorRefWithLocalAddress
- Important: Revert
ThreadPool.SetMinThreads(0,0)
- based on the input from users on "Akka.NET v1.4.19: ChannelExecutor performance data"
Our observed performance numbers for Akka.Remote show a significant increase in performance for v1.4.21 over v1.4.20:
Before
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 109
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 113379, 1764.56
5, 1000000, 186429, 5364.05
10, 2000000, 185340, 10791.11
15, 3000000, 183218, 16374.06
20, 4000000, 179824, 22244.63
25, 5000000, 182716, 27365.89
30, 6000000, 182039, 32960.61
After
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion: Microsoft Windows NT 6.2.9200.0
ProcessorCount: 16
ClockSpeed: 0 MHZ
Actor Count: 32
Messages sent/received per client: 200000 (2e5)
Is Server GC: True
Thread count: 111
Num clients, Total [msg], Msgs/sec, Total [ms]
1, 200000, 109770, 1822.14
5, 1000000, 192902, 5184.79
10, 2000000, 191663, 10435.53
15, 3000000, 191339, 15679.11
20, 4000000, 192725, 20755.78
25, 5000000, 189754, 26350.14
30, 6000000, 189772, 31617.20
N.B. these after numbers don't benefit from the performance benefits we observed in v1.4.20 when we invoked
ThreadPool.SetMinThreads(0,0)
, which makes them even more impressive.
Akka.DependencyInjection Updates
We had one major issue we implemented in v1.4.21 for Akka.DependencyInjection: Abstraction of ServiceProvider
, Improving Akka.DependencyInjection
What this change did was:
- Deprecate the
Akka.DependencyInjection.ServiceProvider
class in favor of theAkka.DependencyInjection.DependencyResolver
class - to avoid namespace collision with Microsoft.Extensions.DependencyInjection.ServiceProvider; - Deprecates the
Akka.DependencyInjection.ServiceProviderSetup
class in favor of theAkka.DependencyInjection.DependencyResolverSetup
class for consistency reasons; Akka.DependencyInjection.DependencyResolver
now takes an input of typeIDependencyResolver
, which allows users to abstract away theIServiceProvider
and mock / replace it during unit testing; and- Added some non-generic
Props
methods for dynamically spawning actors via DI.
All of these changes are backwards-compatible with v1.4.20 and earlier - and the deprecation warnings will appear in your code when you upgrade. If you run into any issues upgrading to Akka.DependencyInjection v1.4.21 please reply on this thread!
Other Changes and Fixes
- Akka.Streams: A couple of fixes affecting the
FileSubscriber
- Akka.DistributedData: memory leak when recovering events from LMDB data store
- Akka.DistributedData: port
VectorClock
performance optimizations toVersionVector
and similar types
To see the full set of fixes in Akka.NET v1.4.21, please see the milestone on Github.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
12 | 999 | 160 | Aaron Stannard |
10 | 410 | 299 | Gregorius Soedharmo |
4 | 853 | 520 | Ismael Hamed |
4 | 5 | 5 | dependabot[bot] |
1 | 6 | 2 | Brah McDude |
1 | 428 | 67 | Sam Ember |
1 | 1 | 1 | Martin |
Changes:
- 95cdfac v1.4.21-beta1 Release Notes (#5071)
- b1a9aa6 eliminate Lazy from
Address
(#5068) - 4bd3ef9 Remove
ThreadPool.SetMinThreads(0,0)
mention from dispatchers documentation (#5069) - 15492d0 Reduced allocations around
ActorCell
andTask
handling (#5053) - 2715c36 Revert
ThreadPool.SetMinThreads(0,0)
(#5059) - 1bec20a Fix DData infinite status/gossip round (#5056)
- 8982b64 remove ISSUE_TEMPLATE.md (#5057)
- 83426ae fixed incorrect deprecation message (#5054)
- f6da797 Bring UnfoldResourceSourceAsync up-to-date (#5052)
- 566dbe3 Removed
StringBuilder
allocation fromBase64Encoding
(#5051)
See More
- c21289e Remove
Uri.TryParse
and replace withSpan<char>
parsing (#5039) [ #4814 ] - 98ef574 changed job configuration for ActorMemoryFootprintBenchmark (#5048)
- 1938a20 added dedicated footprint for measuring Actor memory footprint (#5047)
- 73d19af Add ActorSystemSetup setup (#5045)
- 410066f [MNTR] fix test dll loading error (#5044)
- c663bc2 Abstraction of ServiceProvider, Improving Akka.DependencyInjection (#4814)
- 99afc0e Bump Google.Protobuf from 3.17.1 to 3.17.2 (#5040)
- 3dc2e35 Bump Google.Protobuf from 3.17.0 to 3.17.1 (#5036)
- b888b40 A couple of fixes affecting the FileSubscriber (#5035)
- 431b69e Turn on DData related ClusterSharding MNTR specs (#4926)
- 3f8fa29 Improve MurmurHash string hash memory footprint (#5028)
- 6f5b003 remove
ActorPath.ToString
call fromResolveActorRefWithLocalAddress
(#5034) - 99be70b Consolidate intercept (#5033)
- 61d08b7 Fix a potential race condition in FileSubscriber (#5032)
- 5294e9a added
FastHash
benchmark (#5029) - aa8a3de adding ORSet benchmarks (#4990)
- b5f6552 Bump Google.Protobuf from 3.16.0 to 3.17.0 (#5012)
- d0afa72 Bump BenchmarkDotNet from 0.12.1 to 0.13.0 (#5024)
- 0869e49 Increase timeout value to avoid timeout failure (#5021)
- 3f6182c Fix AkkaProtocolStressTest spec (#5020)
- 1875c32 Enable skipped specs, they're working now (#5018)
- e51d46b Enable skipped batching SQLite specs, these runs just fine now. (#5017)
- 594eb7c [RACY] LoggerSpec TestOutputLogger Make sure that event receive order does not matter (#5015)
- bc5a2e4 Fix SonarQube's "IEnumerable LINQs should be simplified" / Code Smell (#5013)
- 0ef7f07 Merge pull request #5011 from brah-mcdude/dev
- 3ebbfcf Update RELEASE_NOTES.md (#5009)
This list of changes was auto generated.
Akka.NET v1.4.20
1.4.20 May 12 2021
Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.20 is a minor release that includes some bug fixes and improvements to Akka.NET.
- Akka: Fixed some
internal-dispatcher
usages - Akka: Remove restrictions required by netstandard 1.x but available in 2.0
- Akka: Prevent loggers to throw
FormatException
and show a friendly message instead. - Akka.Persistence.Sql.Common: Some persistent actors are stuck with
RecoveryTimedOutException
after circuit breaker opens - Akka.Persistence.Sql.Common: marking Akka.Persistence.Sql.Common as
beta
for v1.4.20 - Akka.Remote:
Akka.Remote.Serialization.PrimitiveSerializers
needs cross platform compatibility - Akka.Streams: Fixed
QueueSource.PostStop
and added a missing test case - Akka.Cluster.Sharding: Reduce sharding warnings when there are no buffered messages
To see the full set of fixes in Akka.NET v1.4.20, please see the milestone on Github.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
4 | 677 | 316 | Gregorius Soedharmo |
3 | 3 | 3 | dependabot[bot] |
3 | 101 | 44 | Ismael Hamed |
2 | 5 | 0 | Aaron Stannard |
1 | 625 | 675 | Matthew Heaton |
Changes:
- 758590f Merge pull request #5008 from akkadotnet/dev
- b6c9661 added v1.4.20 release notes (#5007)
- ecaf9a1 marking Akka.Persistence.Sql.Common as beta for v1.4.20 (#5006)
- a5ce79f Bump Microsoft.Data.SQLite from 5.0.5 to 5.0.6 (#5005)
- d52b852 Bump Google.Protobuf from 3.15.8 to 3.16.0 (#4999)
- 188fc0b Reduce sharding warnings when there are no buffered messages (#5003)
- eff4e4b Bump FsCheckVersion from 2.15.2 to 2.15.3 (#5000)
- 55c1175 Remove restrictions required by netstandard 1.x but available in 2.0 (#3790) [ #3668 ]
- fb61262 Prevent loggers to throw FormatException and show a friendly message instead. (#4998)
- bfcb703 Fixed some internal-dispatcher usages (#4995)
See More
- f591c58 Re-add missing ExceptionEventFilterTests spec, file was commented out. (#4994)
- e5d079a Fix BatchingSqlJournal emitting WriteMessageSuccess before transaction was complete. (#4953)
- 63e0fb9 Fixed QueueSource PostStop and added a missing test case (#4991)
- 25246ac Change the base class of PrimitiveSerializers to SerializerWithStringManifest (#4989)
- 46d4707 Update RELEASE_NOTES.md (#4988)
This list of changes was auto generated.