Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V1.5.27 release notes #7303

Merged
merged 3 commits into from
Jul 25, 2024

Conversation

Aaronontheweb
Copy link
Member

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

@Aaronontheweb Aaronontheweb merged commit b34d645 into akkadotnet:dev Jul 25, 2024
3 of 11 checks passed
Copy link
Contributor

@Arkatufus Arkatufus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Aaronontheweb Aaronontheweb deleted the v1.5.27-release-notes branch July 25, 2024 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants