HDFS-7819. Log WARN message for the blocks which are not in Block ID based layout (Rakesh R via Colin P. McCabe)
(cherry picked from commit f0c980abed
)
This commit is contained in:
parent
dc348f4894
commit
8b3b9568b6
|
@ -381,6 +381,9 @@ Release 2.7.0 - UNRELEASED
|
|||
HDFS-7832. Show 'Last Modified' in Namenode's 'Browse Filesystem'
|
||||
(vinayakumarb)
|
||||
|
||||
HDFS-7819. Log WARN message for the blocks which are not in Block ID based
|
||||
layout (Rakesh R via Colin P. McCabe)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
HDFS-7454. Reduce memory footprint for AclEntries in NameNode.
|
||||
|
|
|
@ -597,14 +597,15 @@ public class DirectoryScanner implements Runnable {
|
|||
for (String bpid : bpList) {
|
||||
LinkedList<ScanInfo> report = new LinkedList<ScanInfo>();
|
||||
File bpFinalizedDir = volume.getFinalizedDir(bpid);
|
||||
result.put(bpid, compileReport(volume, bpFinalizedDir, report));
|
||||
result.put(bpid,
|
||||
compileReport(volume, bpFinalizedDir, bpFinalizedDir, report));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Compile list {@link ScanInfo} for the blocks in the directory <dir> */
|
||||
private LinkedList<ScanInfo> compileReport(FsVolumeSpi vol, File dir,
|
||||
LinkedList<ScanInfo> report) {
|
||||
private LinkedList<ScanInfo> compileReport(FsVolumeSpi vol,
|
||||
File bpFinalizedDir, File dir, LinkedList<ScanInfo> report) {
|
||||
File[] files;
|
||||
try {
|
||||
files = FileUtil.listFiles(dir);
|
||||
|
@ -622,12 +623,14 @@ public class DirectoryScanner implements Runnable {
|
|||
*/
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].isDirectory()) {
|
||||
compileReport(vol, files[i], report);
|
||||
compileReport(vol, bpFinalizedDir, files[i], report);
|
||||
continue;
|
||||
}
|
||||
if (!Block.isBlockFilename(files[i])) {
|
||||
if (isBlockMetaFile("blk_", files[i].getName())) {
|
||||
long blockId = Block.getBlockId(files[i].getName());
|
||||
verifyFileLocation(files[i].getParentFile(), bpFinalizedDir,
|
||||
blockId);
|
||||
report.add(new ScanInfo(blockId, null, files[i], vol));
|
||||
}
|
||||
continue;
|
||||
|
@ -646,9 +649,24 @@ public class DirectoryScanner implements Runnable {
|
|||
break;
|
||||
}
|
||||
}
|
||||
verifyFileLocation(blockFile.getParentFile(), bpFinalizedDir,
|
||||
blockId);
|
||||
report.add(new ScanInfo(blockId, blockFile, metaFile, vol));
|
||||
}
|
||||
return report;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify whether the actual directory location of block file has the
|
||||
* expected directory path computed using its block ID.
|
||||
*/
|
||||
private void verifyFileLocation(File actualBlockDir,
|
||||
File bpFinalizedDir, long blockId) {
|
||||
File blockDir = DatanodeUtil.idToBlockDir(bpFinalizedDir, blockId);
|
||||
if (actualBlockDir.compareTo(blockDir) != 0) {
|
||||
LOG.warn("Block: " + blockId
|
||||
+ " has to be upgraded to block ID-based layout");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue