public int getDiskId() { if(fragment.getDiskIds().length <= 0) { //LOG.warn("===> No DiskId:" + fragment.getPath() + ":" + fragment.getStartKey()); return -1; } else { return fragment.getDiskIds()[0]; } }
private void addDataLocation(Fragment fragment) { ImmutableList<String> hosts = fragment.getHostNames(); Integer[] diskIds = null; if (fragment instanceof FileFragment) { diskIds = ((FileFragment)fragment).getDiskIds(); } for (int i = 0; i < hosts.size(); i++) { dataLocations.add(new DataLocation(hosts.get(i), diskIds == null ? DataLocation.UNKNOWN_VOLUME_ID : diskIds[i])); } }
/** * Generate the map of host and make them into Volume Ids. * */ private Map<String, Set<Integer>> getVolumeMap(List<FileFragment> frags) { Map<String, Set<Integer>> volumeMap = new HashMap<String, Set<Integer>>(); for (FileFragment frag : frags) { String[] hosts = frag.getHosts(); int[] diskIds = frag.getDiskIds(); for (int i = 0; i < hosts.length; i++) { Set<Integer> volumeList = volumeMap.get(hosts[i]); if (volumeList == null) { volumeList = new HashSet<Integer>(); volumeMap.put(hosts[i], volumeList); } if (diskIds.length > 0 && diskIds[i] > -1) { volumeList.add(diskIds[i]); } } } return volumeMap; } /**
private void addDataLocation(Fragment fragment) { String[] hosts = fragment.getHosts(); int[] diskIds = null; if (fragment instanceof FileFragment) { diskIds = ((FileFragment)fragment).getDiskIds(); } for (int i = 0; i < hosts.length; i++) { dataLocations.add(new DataLocation(hosts[i], diskIds == null ? -1 : diskIds[i])); } }
@Override public FileFragmentProto serialize(FileFragment fragment) { FileFragmentProto.Builder builder = FileFragmentProto.newBuilder(); builder.setId(fragment.inputSourceId); builder.setStartOffset(fragment.startKey); builder.setLength(fragment.length); builder.setPath(fragment.getPath().toString()); if(fragment.getDiskIds() != null) { List<Integer> idList = new ArrayList<>(); for(int eachId: fragment.getDiskIds()) { idList.add(eachId); } builder.addAllDiskIds(idList); } if(fragment.hostNames != null) { builder.addAllHosts(fragment.hostNames); } return builder.build(); }
assertEquals(testCount, splits.size()); assertEquals(DataLocation.UNKNOWN_VOLUME_ID, ((FileFragment)splits.get(0)).getDiskIds()[0].intValue()); assertEquals(testCount / 2, splits.size()); assertEquals(1, splits.get(0).getHostNames().size()); assertEquals(DataLocation.UNKNOWN_VOLUME_ID, ((FileFragment)splits.get(0)).getDiskIds()[0].intValue());
assertEquals(2, ((FileFragment)splits.get(0)).getDiskIds().length); assertNotEquals(DataLocation.UNKNOWN_VOLUME_ID, ((FileFragment)splits.get(0)).getDiskIds()[0].intValue());