Skip to content

Releases: akkadotnet/akka.net

Akka.NET v1.5.27

25 Jul 19:35
b34d645
Compare
Choose a tag to compare

1.5.27 July 25th 2024

Akka.NET v1.5.27 is a significant release that includes new features, mission-critical bug fixes, and some performance improvements.

Major Akka.Cluster.Sharding and Akka.Cluster.Tools.Singleton Bug Fixes

In all prior versions of Akka.NET, there are two high impact distributed systems bugs:

  1. Akka.Cluster.Tools.Singleton: singleton moves earlier than expected - as soon as new node joins
  2. Akka.Cluster.Sharding: duplicate shards / entities

As we discovered during the course of our pains-taking bug investigation, these were, in fact, the same issue:

  1. The ClusterSingletonManager is supposed to always belong on the oldest node of a given role type, but an original design error from the time Akka.Cluster.Tools was first introduced to Akka.NET meant that nodes were always sorted in descending order of UpNumber. This is backwards: nodes should always be sorted in ascending order of UpNumber - this means that the oldest possible node is always at the front of the "who is oldest?" list held by the ClusterSingletonManager. This explains why the singleton could appear to move early during deployments and restarts.
  2. The ClusterSingletonManager was suspectible to a race condition where if nodes were shutdown and restarted with the same address in under 20 seconds, the default "down removal margin" used by the ClusterSingletonManager to tolerate dirty exits, it would be possible after multiple successive, fast, restarts for multiple instances of the singleton to be alive at the same time (for a short period.)

Both of these varieties of problem, duplicate singletons, is what lead to duplicate shards.

As a result we've made the following fixes:

Akka.Discovery and ClusterClient Discovery Support

In Akka.NET v1.5.27 we've added support for using Akka.Cluster.Tools.ClusterClient alongside with Akka.Discovery plugins to automatically discover the initial contacts you need for ClusterClientReceptionist instances in your environment.

You can read the documentation for how this works here: https://getakka.net/articles/clustering/cluster-client.html#contact-auto-discovery-using-akkadiscovery

Related PRs and issues:

Other Bug Fixes and Improvements

To see the full set of changes in Akka.NET v1.5.27, click here.

COMMITS LOC+ LOC- AUTHOR
15 835 1001 Aaron Stannard
12 1123 207 Gregorius Soedharmo

Changes:

  • b34d645 V1.5.27 release notes (#7303)
  • 6a81fd3 Akka.Cluster.Tools: deprecate ClustersSingletonManagerSettings.ConsiderAppVersion (#7302)
  • 7180810 Akka.Cluster.Tools: fix mutability and oldest state bugs with ClusterSingletonManager (#7298)
  • 6b6afe4 Add AlsoTo downstream failure propagation support (#7301)
  • 7811504 Fix ActorMaterializerImpl null LogSource (#7300)
  • f2e81c5 Akka.Cluster.Tools.Singleton / Akka.Cluster.Sharding: fix duplicate shards caused by incorrect ClusterSingletonManager HandOver (#7297) [ #6973, #6793, #7196 ]
  • f4501e8 migrated ClusterSingletonManager to switch statements (#7296)
  • 9eb670a ShardCoordinator: misc cleanup (#7295)
  • a6daed7 remove unused reference.confg from DistributedData.LightningDb (#7294)
  • d3b3613 DData: if lmdb.dir is null or empty, log a warning and set to default (#7292)
See More
  • 50ef7b9 Akka.Cluster: added sanity check for Member.AgeComparer (#7291) [ #6973 ]
  • f7f9078 Akka.Cluster.Sharding: enable prefer-oldest by default on Replicator (#7290)
  • 4b7cff3 Akka.Cluster.Sharding: added tests for DData consistency settings (#7288)
  • 5176dfb Akka.Cluster: improve gossip serialization performance (#7281)
  • 9981d83 Fix busted Windows Build stage (#7283)
  • 7947c1f Optimize cluster message serializer benchmarks (#7282)
  • 7fb0c2b Add ActorBase lifecycle flow unit tests (#7128)
  • 8843a21 Akka.Cluster: ClusterMessageSerializer benchmarks (#7280)
  • 9f5de84 Akka.Cluster: harden ignored gossip messages (#7278)
  • 8f200ef Update RELEASE_NOTES.md for 1.5.27-beta2 release (#7277)
  • 03a469f Fix ClusterClientDiscovery, missing port name in lookup (#7276)
  • 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
  • e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
  • 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
  • dab2a5e Update failure message syntax (#7273)
  • 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
  • 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
  • 7136919 Added v1.5.27 placeholder
  • f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)

This list of changes was auto generated.

Akka.NET v1.5.27-beta2

03 Jul 21:16
8f200ef
Compare
Choose a tag to compare
Pre-release

1.5.27-beta2 July 3rd 2024

COMMITS LOC+ LOC- AUTHOR
1 1 1 Gregorius Soedharmo

1.5.27-beta1 July 3rd 2024

Akka.NET v1.5.27-beta1 improves upon the new ClusterClient initial contact auto-discovery feature to make it more robust in implementation.

COMMITS LOC+ LOC- AUTHOR
5 422 183 Gregorius Soedharmo
1 4 0 Aaron Stannard
1 1 1 Sean Killeen

Changes:

  • 8f200ef Update RELEASE_NOTES.md for 1.5.27-beta2 release (#7277)
  • 03a469f Fix ClusterClientDiscovery, missing port name in lookup (#7276)
  • 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
  • e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
  • 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
  • dab2a5e Update failure message syntax (#7273)
  • 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
  • 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
  • 7136919 Added v1.5.27 placeholder
  • f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)

This list of changes was auto generated.

Akka.NET v1.5.27-beta1

03 Jul 15:26
67e7754
Compare
Choose a tag to compare
Pre-release

1.5.27-beta1 July 3rd 2024

Akka.NET v1.5.27-beta1 improves upon the new ClusterClient initial contact auto-discovery feature to make it more robust in implementation.

COMMITS LOC+ LOC- AUTHOR
5 422 183 Gregorius Soedharmo
1 4 0 Aaron Stannard
1 1 1 Sean Killeen

Changes:

  • 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
  • e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
  • 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
  • dab2a5e Update failure message syntax (#7273)
  • 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
  • 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
  • 7136919 Added v1.5.27 placeholder
  • f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)

This list of changes was auto generated.

Akka.NET v1.5.26

27 Jun 15:28
Compare
Choose a tag to compare

1.5.26 June 27th 2024

Akka.NET v1.5.26 introduces a new Akka.Cluster.Tools feature and a logging improvement.

Preliminary ClusterClient Initial Contact Auto-Discovery Feature

To use this feature, you will need to use Akka.Discovery implementation (Kubernetes or Azure) version 1.5.26-beta1 or higher

This feature allows ClusterClient to use Akka.Discovery to automatically query for cluster client receptionists inside a dynamic environment such as Kubernetes.

The preliminary documentation for this feature can be read here

You can see the full set of changes for Akka.NET v1.5.26 here.

COMMITS LOC+ LOC- AUTHOR
3 45 11 Aaron Stannard
2 945 15 Gregorius Soedharmo

Changes:

  • c8fc3d4 Add notes to cluster client bit
  • 8d60093 Update RELEASE_NOTES.md for 1.5.26 release
  • 1cce480 Update ClusterClient documentation to include the new discovery feature (#7265)
  • 0fd7ca0 Improve traceability of ITimerMsg (#7262)
  • 8fd8c62 Add ClusterClient initial contact discovery feature (#7261)
  • 299fedf made examples, benchmarks, and internal libraries unpackable (#7263)
  • 851a72b Added v1.5.26 placeholder (#7258)

This list of changes was auto generated.

Akka.NET v1.5.25

14 Jun 18:25
31222aa
Compare
Choose a tag to compare

1.5.25 June 14th 2024

Akka.NET v1.5.25 includes a critical bug fix for logging and some other minor fixes.

Logging Errors Introduced in v1.5.21

Versions [v1.5.21,v1.5.24] are all affected by Akka.Logging: v1.5.21 appears to have truncated log source, timestamps, etc from all log messages - this was a bug introduced when we added the log-filtering feature we shipped in Akka.NET v1.5.21.

This issue has been resolved in v1.5.25 and we've added regression tests to ensure that the log format gets version-checked just like our APIs going forward.

Other fixes:

You can see the full set of changes for Akka.NET v1.5.25 here.

COMMITS LOC+ LOC- AUTHOR
6 347 44 Aaron Stannard
2 1197 1015 Gregorius Soedharmo

Changes:

  • 31222aa added v1.5.25 release notes (#7257)
  • be4ed4d Akka.Event: restore missing log data (#7256) [ #7255 ]
  • 6bcab70 Akka.Router: automatically unpack IScheduledTellMsg when being handled through a router (#7249) [ #7247 ]
  • 487218c Modernize Cluster.Client code (#7251)
  • 260aee9 add more appropriate settings for Ask vs. Tell benchmarking in BDN (#7248)
  • a14bb84 Fix Akka.Discovery ServiceDiscovery instantiation (#7245)
  • 3bd219e [Benchmarks] Add Ask vs. Tell memory pressure baseline (#7244)
  • b5a133a RemotePingPong: don't let permission issues crash benchmark (#7241)
  • 12619cb Added v1.5.25 (#7240)

This list of changes was auto generated.

Akka.NET v1.5.24

07 Jun 17:42
0522779
Compare
Choose a tag to compare

1.5.24 June 7th 2024

Akka.NET v1.5.24 is a patch release for Akka.NET that addresses CVE-2018-8292 and also adds a quality of life improvement to IActorRef serialization.

COMMITS LOC+ LOC- AUTHOR
3 35 22 Gregorius Soedharmo
1 26 51 Mike Perrin
1 15 2 Aaron Stannard

You can see the full set of changes for Akka.NET v1.5.24 here.

This list of changes was auto generated.

Akka.NET v1.5.23

06 Jun 14:28
2dfbecf
Compare
Choose a tag to compare

1.5.23 June 4th 2024

COMMITS LOC+ LOC- AUTHOR
2 299 44 Aaron Stannard
1 47 49 Gregorius Soedharmo
1 1 1 Hassan Abu Bakar

You can see the full set of changes for Akka.NET v1.5.23 here.

Changes:

This list of changes was auto generated.

Akka.NET v1.5.22

03 Jun 20:58
1255fa1
Compare
Choose a tag to compare

1.5.22 June 4th 2024

Akka.NET v1.5.22 is a patch release for Akka.NET with a few bug fixes and logging improvement.

On Resolving CVE-2018-8292

In order to resolve this CVE, we had to update DotNetty.Handlers to the latest version and unfortunately, this comes with about 10% network throughput performance hit. We are looking into possible replacement for DotNetty to improve this performance lost in the future (see #7225 for updates).

Before

Num clients, Total [msg], Msgs/sec, Total [ms], Start Threads, End Threads  
         1,  200000,    125000,    1600.62,            46,              76  
         5, 1000000,    494072,    2024.04,            84,              95  
        10, 2000000,    713013,    2805.73,           103,             107  
        15, 3000000,    724463,    4141.38,           115,             115  
        20, 4000000,    714669,    5597.66,           123,             123  
        25, 5000000,    684932,    7300.37,           131,             107  
        30, 6000000,    694525,    8639.88,           115,              93  

After

Num clients, Total [msg], Msgs/sec, Total [ms], Start Threads, End Threads
         1,  200000,    123763,    1616.32,            46,              73
         5, 1000000,    386101,    2590.66,            81,              90
        10, 2000000,    662691,    3018.54,            98,             104
        15, 3000000,    666223,    4503.86,           112,             113
        20, 4000000,    669681,    5973.89,           121,             113
        25, 5000000,    669255,    7471.86,           121,             105
        30, 6000000,    669121,    8967.61,           113,              92
COMMITS LOC+ LOC- AUTHOR
6 167 188 Aaron Stannard
3 93 10 Gregorius Soedharmo

You can see the full set of changes for Akka.NET v1.5.22 here.

Changes:

This list of changes was auto generated.

Akka.NET v1.5.21

28 May 16:52
be52f7f
Compare
Choose a tag to compare

1.5.21 May 28th 2024

Akka.NET v1.5.21 is a significant release for Akka.NET with a major feature additions and bug fixes.

Log Message Filtering

You can now filter out unwanted log messages based on either its source or message content. Documentation can be read in the logging documentation.

New Akka.Analyzers Rule

Added AK1006 rule to suggest user to use PersistAll() and PersistAllAsync() when applicable. Documentation can be read in the documentation

COMMITS LOC+ LOC- AUTHOR
7 900 53 Aaron Stannard
5 497 1187 Gregorius Soedharmo
1 1 1 Åsmund

You can see the full set of changes for Akka.NET v1.5.21 here.

Changes:

  • be52f7f Add contributor table and milestone link (#7208)
  • 5b2cef5 Update RELEASE_NOTES,md for 1.5.21 release (#7207)
  • 06e5ade Bump Akka.Analyzers to 0.2.5 (#7206)
  • ef04e3a [DOC] Add Akka.Analyzers AK1006 documentation (#7205)
  • 28cb273 Update documentation-guidelines.md (#7204)
  • 8100d30 Akka.Actor.Serialization: remember to serialize envelope AND underlying type when using serialize-messages=on (#7200)
  • 45b5193 Fix missing sendOneMessageToEachGroup field in Publish (#7202)
  • 8be4730 ensure we use correct serializer in DistributedPubSubSerializerSpecs (#7199)
  • d1ed226 Akka.Event: add log filtering system to prevent Akka.NET logs from being emitted in first place (#7179)
  • 3f0be58 fix race conditions with ReceivePersistentActorTests (#7194)
See More
Read more

Akka.NET v1.3.19

02 May 20:32
aa5cb07
Compare
Choose a tag to compare

1.3.19 May 03 2024

1.3.19 consists of non-breaking update to the remoting primitive serializer.

To see the full set of changes in Akka.NET v1.3.19, click here.

Changes:

  • aa5cb07 Update RELEASE_NOTES.md for 1.3.19 release (#7183)
  • 506f8d0 [1.3] Implement cross platform primitive serializer (#7182) [ #4989, #5280, #5290 ]
  • f23f15f added v1.3.18 release notes (#4311)
  • be94d55 Merge pull request #4310 from Aaronontheweb/v1.3.18-backport
  • c8cc24f close #4246 - no throw inside EndpointReader (#4249)
  • 9475326 close #3879 - disable buffer pooling in DotNetty transport (#4252)
  • da53e08 Fix atomic updates of AddressTerminatedTopic._subscribers. Also, optimize the implementation to not take copies on Subscribe() or Unsubscribe(). (#4307)
  • 9f2948a Fix IActorRef leaks in AddressTerminatedTopic when entity terminates immediately after unwatching a remote actor. (#4305)
  • c0cec03 adding NBench 2.0 to 1.3 Akka.NET (#4293) [ #4292 ]
  • 5542210 update build YAML for v1.3 (#4296)
See More
  • 546a5a0 compute incremental changes against the v1.3 branch for 1.3 PRs (#4295)
  • 3f8a640 fixed-Akka-logo-readme
  • d96a9ce cleaned up build status table in README (#3912)
  • d07b944 Update and fix readme (#3910)
  • e52125b added v1.3.17 release notes
  • 4d89bba Akka.Remote: don't log aborted connection as disassociation error (#4101)
  • a389364 close #4099 - made ActorSystem.Dispose method block until WhenTerminated.IsComplete == true (#4105)
  • 58076c3 TypeExtensions.TypeQualifiedName like in Hyperion (#4071)
  • 92fd094 Fix #4083 - Endpoint receive buffer stack overflow (#4089)
  • 116e6e4 Convert to ImmutableHashSet for consistency in comparison (#4090)
  • a595d15 Remove string interpolation from cluster logs (#4084)
  • 8f97c3c Fix/inbox actor reference (#4073)
  • fed9051 Added delayed heartbeat logging (#4057)
  • 23c2206 Add timeout to abort joining of seed nodes (#3863)
  • fc43334 Stop DeadLetterListener on terminate if LogDeadLettersDuringShutdown is disabled (#4042)
  • 4487982 Fix state non-empty check when starting HandOffStopper (#4043)

This list of changes was auto generated.