@Override public void close() throws IOException { if (this.volumeReference != null) { volumeReference.close(); } }
@Override public void close() throws IOException { IOException ioe = null; for (FsVolumeReference ref : references) { try { ref.close(); } catch (IOException e) { ioe = e; } } references.clear(); if (ioe != null) { throw ioe; } } }
/** * Moves a given block from one volume to another volume. This is used by disk * balancer. * * @param block - ExtendedBlock * @param destination - Destination volume * @return Old replica info */ @Override public ReplicaInfo moveBlockAcrossVolumes(ExtendedBlock block, FsVolumeSpi destination) throws IOException { ReplicaInfo replicaInfo = getReplicaInfo(block); if (replicaInfo.getState() != ReplicaState.FINALIZED) { throw new ReplicaNotFoundException( ReplicaNotFoundException.UNFINALIZED_REPLICA + block); } FsVolumeReference volumeRef = null; try (AutoCloseableLock lock = datasetLock.acquire()) { volumeRef = destination.obtainReference(); } try { moveBlock(block, replicaInfo, volumeRef); } finally { if (volumeRef != null) { volumeRef.close(); } } return replicaInfo; }
@Override public void close() throws IOException { if (this.volumeReference != null) { volumeReference.close(); } }
@Override public void close() throws IOException { if (this.volumeReference != null) { volumeReference.close(); } }
} finally { if (volumeRef != null) { volumeRef.close();
@Test public void testReleaseVolumeRefIfNoBlockScanner() throws IOException { FsVolumeList volumeList = new FsVolumeList( Collections.<VolumeFailureInfo>emptyList(), null, blockChooser); File volDir = new File(baseDir, "volume-0"); volDir.mkdirs(); FsVolumeImpl volume = new FsVolumeImpl(dataset, "storage-id", volDir, conf, StorageType.DEFAULT); FsVolumeReference ref = volume.obtainReference(); volumeList.addVolume(ref); try { ref.close(); fail("Should throw exception because the reference is closed in " + "VolumeList#addVolume()."); } catch (IllegalStateException e) { } }
} finally { if (volumeRef != null) { volumeRef.close();
} finally { if (volumeRef != null) { volumeRef.close();