HDFS-6799. The invalidate method in SimulatedFSDataset failed to remove (invalidate) blocks from the file system. Contributed by Megasthenis Asteris.

This commit is contained in:
Benoy Antony 2014-09-16 16:24:23 -07:00
parent 7971c97ec1
commit 02adf7185d

View File

@ -482,9 +482,10 @@ public synchronized void finalizeBlock(ExtendedBlock b) throws IOException {
}
@Override // FsDatasetSpi
public synchronized void unfinalizeBlock(ExtendedBlock b) {
public synchronized void unfinalizeBlock(ExtendedBlock b) throws IOException{
if (isValidRbw(b)) {
blockMap.remove(b.getLocalBlock());
final Map<Block, BInfo> map = getMap(b.getBlockPoolId());
map.remove(b.getLocalBlock());
}
}
@ -624,7 +625,7 @@ public synchronized void invalidate(String bpid, Block[] invalidBlks)
continue;
}
storage.free(bpid, binfo.getNumBytes());
blockMap.remove(b);
map.remove(b);
}
if (error) {
throw new IOException("Invalidate: Missing blocks.");