}
}
}
private boolean maintainsLocations(List<Address> owners, Address candidate, Address replaced) {
TopologyAwareAddress topologyAwareCandidate = (TopologyAwareAddress) candidate;
TopologyAwareAddress topologyAwareReplaced = (TopologyAwareAddress) replaced;
Set<String> newSites = new HashSet<String>();
Set<String> newRacks = new HashSet<String>();
Set<String> newMachines = new HashSet<String>();
for (Address node : owners) {
if (node.equals(replaced))
continue;
TopologyAwareAddress topologyAwareNode = (TopologyAwareAddress) node;
newSites.add(topologyAwareNode.getSiteId());
newRacks.add(topologyAwareNode.getSiteId() + "|" + topologyAwareNode.getRackId());
newMachines.add(topologyAwareNode.getSiteId() + "|" + topologyAwareNode.getRackId()
+ "|" + topologyAwareNode.getMachineId());
}
newSites.add(topologyAwareCandidate.getSiteId());
newRacks.add(topologyAwareCandidate.getSiteId() + "|" + topologyAwareCandidate.getRackId());
newMachines.add(topologyAwareCandidate.getSiteId() + "|" + topologyAwareCandidate.getRackId()