HDFS-17197. Show file replication when listing corrupt files. (#6095). Contributed by Shuyan Zhang.
Signed-off-by: He Xiaoqiao <hexiaoqiao@apache.org>
This commit is contained in:
parent
13c5825c00
commit
ecee022e49
@ -6131,15 +6131,20 @@ void releaseBackupNode(NamenodeRegistration registration)
|
|||||||
static class CorruptFileBlockInfo {
|
static class CorruptFileBlockInfo {
|
||||||
final String path;
|
final String path;
|
||||||
final Block block;
|
final Block block;
|
||||||
|
private final int replication;
|
||||||
|
private final String ecPolicy;
|
||||||
|
|
||||||
public CorruptFileBlockInfo(String p, Block b) {
|
CorruptFileBlockInfo(String p, Block b, int r, String ec) {
|
||||||
path = p;
|
path = p;
|
||||||
block = b;
|
block = b;
|
||||||
|
replication = r;
|
||||||
|
ecPolicy = ec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return block.getBlockName() + "\t" + path;
|
return block.getBlockName() + "\t" +
|
||||||
|
(replication == -1 ? ecPolicy : replication) + "\t" + path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -6195,7 +6200,21 @@ Collection<CorruptFileBlockInfo> listCorruptFileBlocks(String path,
|
|||||||
if (inode != null) {
|
if (inode != null) {
|
||||||
String src = inode.getFullPathName();
|
String src = inode.getFullPathName();
|
||||||
if (isParentEntry(src, path)) {
|
if (isParentEntry(src, path)) {
|
||||||
corruptFiles.add(new CorruptFileBlockInfo(src, blk));
|
int repl = -1;
|
||||||
|
String ecPolicyName = null;
|
||||||
|
if (inode.isFile()) {
|
||||||
|
if (inode.asFile().isStriped()) {
|
||||||
|
ErasureCodingPolicy ecPolicy =
|
||||||
|
ErasureCodingPolicyManager.getInstance()
|
||||||
|
.getByID(inode.asFile().getErasureCodingPolicyID());
|
||||||
|
if (ecPolicy != null) {
|
||||||
|
ecPolicyName = ecPolicy.getName();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
repl = inode.asFile().getFileReplication();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
corruptFiles.add(new CorruptFileBlockInfo(src, blk, repl, ecPolicyName));
|
||||||
count++;
|
count++;
|
||||||
if (count >= maxCorruptFileBlocksReturn)
|
if (count >= maxCorruptFileBlocksReturn)
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user