With a min_part_hours of zero, it's possible to move more than one replicas of the same part in a single rebalance. This change in behavior only effects min_part_hour zero rings, which are understood to be uncommon in production mostly because of this very specific and strange behavior of min_part_hour zero rings. With this change, no matter how small your min_part_hours it will always require at least N rebalances to move N part-replicas of the same part. To supplement the existing persisted _last_part_moves structure to enforce min_part_hours, this change adds a _part_moved_bitmap that exists only during the life of the rebalance, to track when rebalance moves a part in order to prevent another replicas of the same part from being moved in the same rebalance. Add authors: Clay Gerrard, clay.gerrard@gmail.com Christian Schwede, cschwede@redhat.com Closes-bug: #1586167 Change-Id: Ia1629abd5ce6e1b3acc2e94f818ed8223eed993a
29 KiB
29 KiB