* issue could be reproduced with sleep(200) before the persistenceTestKit.clearByPersistenceId
in EventSourcedBehaviorTestKitImpl
* problem is that there is a race condition betwen that clear and that the EventSourcedBehavior
is starting concurrently, which can result in that the EventSourcedBehavior may see events from
previous test if using same persistenceId
* solution is to clearAll before starting the EventSourcedBehavior
Adds some level of cluster awareness to both the LeastShardAllocationStrategy implementations:
* #27368 prefer shard allocations on new nodes during rolling updates
* #27367 don't rebalance during rolling update
* #29554 don't rebalance when there are joining nodes
* #29553 don't allocate to leaving, downed, exiting and unreachable nodes
* When allocating when there are joining, unreachable, are leaving are de-prioritized to decrease the risk that a shard is allocated just to directly need to be re-allocated on a different node.
* The rebalance in the LeastShardAllocationStrategy is only comparing the region
with most shards with the one with least shards. Makes the rebalance rather
slow. By default it's only rebalancing 1 shard at a time.
* This new strategy looks at all current allocations to find the optimal
number of shards per region and tries to adjust towards that value.
Picking from all regions with more shards than the optimal.
* Absolute and relative limit on how many shards that can be rebalanced
in one round.
* It's also not starting a new rebalance round until the previous has
completed.
* unit tests
* second phase for fine grained rebalance, due to rounding it will not be perfect in the first phase
* randomized unit test
* configuration settings
* docs
* will be used in rolling update features
* configured with akka.cluster.app-version
* reusing same implementation as ManifestInfo.Version
by moving that to akka.util.Version
* additional version test
* support dynver format, + separator, and commit number
* improve version parser
* lazy parse
* make Member.appVersion internal
* Fix calculating backoff delay in order to prevent IllegalArgumentException #29568
* Fix calculating backoff delay in order to prevent IllegalArgumentException #29568 / remove BackoffCalculatorSpec due to it is difficult to make calculateDelay testable and not tp break binary backward compatibility
* Reduce sharding warnings when there are no buffered messages
If shard regions are started before the cluster is formed warnings are
logged. The user can wait until SelfUp but for the cases they don't make
logging debug until the user has buffered messages.
* Review feedback
* Review feedback
* To avoid head of line blocking from serialization and transfer of large messages
this can be enabled.
* ProducerController setting to chunk messages
* split up large messages in chunks in ProducerController
and assemble again in ConsumerController
* serialization moved to these actors instead of in the Artery stream
* other messages (for other actors) can interleave with the chunks
* serializer for ChunkedMessage in SequencedMessage and MessageSent
* cleanup partially stored chunked messages
* reference docs
* mima filters
* additional test for sending the Request after half window size
* enforce that chunk-large-messages=off for sharding and work-pulling