@Override void addBlockPool(String bpid, Configuration conf, Timer timer) throws IOException { LOG.info("Adding block pool " + bpid + " to volume with id " + getStorageID()); ProvidedBlockPoolSlice bp; bp = new ProvidedBlockPoolSlice(bpid, this, conf); bpSlices.put(bpid, bp); }
@Override public LinkedList<ScanInfo> compileReport(String bpid, LinkedList<ScanInfo> report, ReportCompiler reportCompiler) throws InterruptedException, IOException { LOG.info("Compiling report for volume: " + this + " bpid " + bpid); if(bpSlices.containsKey(bpid)) { bpSlices.get(bpid).compileReport(report, reportCompiler); } return report; }
@Override void getVolumeMap(ReplicaMap volumeMap, final RamDiskReplicaTracker ramDiskReplicaMap) throws IOException { LOG.info("Creating volumemap for provided volume " + this); for(ProvidedBlockPoolSlice s : bpSlices.values()) { s.fetchVolumeMap(volumeMap, ramDiskReplicaMap, remoteFS); } }
volumeMap.add(bpid, newReplica); bpVolumeMap.add(bpid, newReplica); incrNumBlocks(); incDfsUsed(region.getBlock().getNumBytes()); } else { LOG.warn("A block with id " + newReplica.getBlockId()
@Override long getBlockPoolUsed(String bpid) throws IOException { return getProvidedBlockPoolSlice(bpid).getDfsUsed(); }
@VisibleForTesting BlockAliasMap<FileRegion> getBlockFormat(String bpid) throws IOException { return getProvidedBlockPoolSlice(bpid).getBlockAliasMap(); }
@Override public BlockIterator newBlockIterator(String bpid, String name) { return new ProviderBlockIteratorImpl(bpid, name, bpSlices.get(bpid).getBlockAliasMap()); }
@VisibleForTesting void setFileRegionProvider(String bpid, BlockAliasMap<FileRegion> blockAliasMap) throws IOException { ProvidedBlockPoolSlice bp = bpSlices.get(bpid); if (bp == null) { throw new IOException("block pool " + bpid + " is not found"); } bp.setFileRegionProvider(blockAliasMap); } }
@VisibleForTesting BlockAliasMap<FileRegion> getFileRegionProvider(String bpid) throws IOException { return getProvidedBlockPoolSlice(bpid).getBlockAliasMap(); }
@Override void getVolumeMap(String bpid, ReplicaMap volumeMap, final RamDiskReplicaTracker ramDiskReplicaMap) throws IOException { getProvidedBlockPoolSlice(bpid).fetchVolumeMap(volumeMap, ramDiskReplicaMap, remoteFS); }
@Override public BlockIterator loadBlockIterator(String bpid, String name) throws IOException { ProviderBlockIteratorImpl iter = new ProviderBlockIteratorImpl(bpid, name, bpSlices.get(bpid).getBlockAliasMap()); iter.load(); return iter; }
@Override long getNumBlocks() { long numBlocks = 0; for (ProvidedBlockPoolSlice s : bpSlices.values()) { numBlocks += s.getNumOfBlocks(); } return numBlocks; }
@Override boolean isBPDirEmpty(String bpid) throws IOException { return getProvidedBlockPoolSlice(bpid).isEmpty(); }
@Override public long getDfsUsed() throws IOException { long dfsUsed = 0; synchronized(getDataset()) { for(ProvidedBlockPoolSlice s : bpSlices.values()) { dfsUsed += s.getDfsUsed(); } } return dfsUsed; }