* since the ordering can change based on the member's status
it's not possible to use ordinary - for removal
* similar issue at a few places where ageOrdering was used
* move methods that depends on selfUniqueAddress and selfDc
to a separate MembershipState class, which also holds the
latest gossip
* this removes the need to pass in the parameters from everywhere and
makes it easier to cache some results
* makes it clear that those parameters are always selfUniqueAddress
and selfDc, instead of some arbitary node/dc
* Sharding only within own team (coordinator is singleton)
* the ddata Replicator used by Sharding must also be only within own team
* added support for Set of roles in ddata Replicator so that can be used
by sharding to specify role + team
* Sharding proxy can route to sharding in another team
* Introduce missing team role if necessary (#23243)
When receiving gossip from a node that did not contain any team
information (such as gossip from a node running a previous version of
Akka), add the default team role during deserialization.
* Simpler implementation of adding default role
* More efficient `rolesFromProto`
Now actually outperforms the previous implementation. Still room for
improvement as this probably checks for duplicates in the set on each add,
but creating our own array-backed set here is probably going overboard :).
* Fixes following rebase
* Guarantee no sneaky type puts more teams in the role list
* Leader per team and initial tests
* MiMa filters
* Second iteration (not working though)
* Verbose gossip logging etc.
* Gossip to team-nodes even if there is inter-team unreachability
* More work ...
* Marking removed nodes with tombstones in Gossip
* More test coverage for Gossip.remove
* Bug failing other multi-node tests squashed
* Multi-node test for team-split
* Review fixes - only prune tombstones on leader ticks
* Clean code is happy code.
* All I want is for MiMa to be my friend
* These constants are internal
* Making the formatting gods happy
* I used the wrong reachability for ignoring gossip :/
* Still hadn't quite gotten how reachability was supposed to work
* Review feedback applied
* Cross-team downing should still work
* Actually prune tombstones in the prune tombstones method ...
* Another round against reachability. Reachability leading with 15 - 2 so far.
Introduced cluster-team.md so we can grow the documentation with each
PR, but did not add it to the ToC yet.
(cherry picked from commit a06badaa03fa9f3c9a942b1468090f758c74a869)
* Adding MergePrioritized graph stage
* Adding MergePrioritized in akka docs
* Adding suggested documentation of MergePrioritized in akka docs
* Adding thread safe random number generator ThreadLocalRandom
* fixing documentation for MergePrioritized
* Refactoring selectNextElement() in MergePrioritized for less memory allocations
* Removing extra parameter in MergePrioritized and using SplittableRandom
* Refactoring GraphMergePrioritizedSpec
* Changes for paradox migration
* Optimized a few methods in MergePrioritized (#22864)
* increased no of elements in source in GraphMergePrioritizedSpec (#22864)
* Introduce cluster 'team' setting and add to Member
Introduced cluster-team.md so we can grow the documentation with each
PR, but did not add it to the ToC yet.
* Less abbreviations, more reliable test