From: Sage Weil Date: Tue, 9 Mar 2021 23:47:34 +0000 (-0500) Subject: mgr/cephadm/schedule: shuffle candidates, not final placements X-Git-Tag: v16.2.0~106^2~34 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d3febc604c0e83fa10919ac2a9bd5edead106101;p=ceph.git mgr/cephadm/schedule: shuffle candidates, not final placements Otherwise we may end out randomly doubling up on some hosts and none on others (when we have more than one placement per host). Signed-off-by: Sage Weil (cherry picked from commit 8931958580c3d876fb45b2cec864817b4321a1c2) --- diff --git a/src/pybind/mgr/cephadm/schedule.py b/src/pybind/mgr/cephadm/schedule.py index 6148b6a181de..785a1bebaf81 100644 --- a/src/pybind/mgr/cephadm/schedule.py +++ b/src/pybind/mgr/cephadm/schedule.py @@ -44,10 +44,6 @@ class SimpleScheduler(BaseScheduler): if not host_pool: return [] host_pool = [x for x in host_pool] - # gen seed off of self.spec to make shuffling deterministic - seed = hash(self.spec.service_name()) - # shuffle for pseudo random selection - random.Random(seed).shuffle(host_pool) return host_pool[:count] @@ -239,6 +235,10 @@ class HostAssignment(object): f"Filtered out host {h.hostname}: could not verify host allowed virtual ips") logger.debug('Filtered %s down to %s' % (old, hosts)) + # shuffle for pseudo random selection + # gen seed off of self.spec to make shuffling deterministic + seed = hash(self.spec.service_name()) + random.Random(seed).shuffle(hosts) return hosts def hosts_with_daemons(self, candidates: List[HostPlacementSpec]) -> List[HostPlacementSpec]: