c/partition_allocator: maintain and use final partition counts #11154
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When moving partitions, partition allocations on old nodes are not removed until the move is finished. This makes sense because partitions remain physically present on old nodes until the very end. But we also use these allocation counts for count-based rebalancing. This is incorrect because after all moves are finished, the distribution won't necessary be uniform.
To fix this, introduce "final counts" - the number of partitions on a node after all currently in-progress moves are finished, maintain it when (re)allocating partitions and in
topic_updates_dispatcher
and use it in placement constraints and partition counts rebalancing inmembers_backend
.Backports Required
Release Notes