@Override
public void manageTransitions(Coordinator coordinator, RingGroup ringGroup) throws IOException {
DomainGroup domainGroup = ringGroup.getDomainGroup();
if (domainGroup == null) {
LOG.info("Domain group not found. Nothing to do.");
return;
}
Map<Domain, Map<Integer, Set<Host>>> domainToPartitionToHostsFullyServing =
PartitionUtils.domainToPartitionToHostsServing(ringGroup, status);
ThreeNestedMap<Domain, Integer, String, Long> domainPartitionBucketHostCounts =
PartitionUtils.domainToPartitionToHostsServingInBucket(domainToPartitionToHostsFullyServing, status);
SortedSet<Ring> rings = ringGroup.getRingsSorted();
int ringCount = rings.size();
for (Ring ring : rings) {
partitionAssigner.prepare(ring, domainGroup.getDomainVersions(), ringGroup.getRingGroupConductorMode());
for (Host host : ring.getHostsSorted()) {
manageTransitions(ringCount, host, domainGroup, domainToPartitionToHostsFullyServing, domainPartitionBucketHostCounts);
}
}
}