@Override protected Collection<DatanodeStorageInfo> pickupReplicaSet( Collection<DatanodeStorageInfo> moreThanOne, Collection<DatanodeStorageInfo> exactlyOne, Map<String, List<DatanodeStorageInfo>> rackMap) { // shareUDSet includes DatanodeStorageInfo that share same upgrade // domain with another DatanodeStorageInfo. Collection<DatanodeStorageInfo> all = combine(moreThanOne, exactlyOne); List<DatanodeStorageInfo> shareUDSet = getShareUDSet( getUpgradeDomainMap(all)); // shareRackAndUDSet contains those DatanodeStorageInfo that // share rack and upgrade domain with another DatanodeStorageInfo. List<DatanodeStorageInfo> shareRackAndUDSet = new ArrayList<>(); if (shareUDSet.size() == 0) { // All upgrade domains are unique, use the parent set. return super.pickupReplicaSet(moreThanOne, exactlyOne, rackMap); } else if (moreThanOne != null) { for (DatanodeStorageInfo storage : shareUDSet) { if (moreThanOne.contains(storage)) { shareRackAndUDSet.add(storage); } } } return (shareRackAndUDSet.size() > 0) ? shareRackAndUDSet : shareUDSet; }
for(DatanodeStorageInfo storage : pickupReplicaSet(moreThanOne, exactlyOne, rackMap)) { if (!excessTypes.contains(storage.getStorageType())) {
for(DatanodeStorageInfo storage : pickupReplicaSet(moreThanOne, exactlyOne, rackMap)) { if (!excessTypes.contains(storage.getStorageType())) {
for(DatanodeStorageInfo storage : pickupReplicaSet(moreThanOne, exactlyOne, rackMap)) { if (!excessTypes.contains(storage.getStorageType())) {