Skip to content

Commit

Permalink
HDFS-15227. NPE if the last block changes from COMMITTED to COMPLETE …
Browse files Browse the repository at this point in the history
…during FSCK. Contributed by Ayush Saxena.
  • Loading branch information
ayushtkn committed Mar 22, 2020
1 parent b74e47e commit 62c8015
Showing 1 changed file with 15 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import java.util.concurrent.ThreadLocalRandom;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.hdfs.server.blockmanagement.BlockUnderConstructionFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.classification.InterfaceAudience;
Expand Down Expand Up @@ -871,16 +872,20 @@ private void collectBlocksSummary(String parent, HdfsFileStatus file,
String blkName = block.toString();
BlockInfo storedBlock = blockManager.getStoredBlock(
block.getLocalBlock());
DatanodeStorageInfo[] storages = storedBlock
.getUnderConstructionFeature().getExpectedStorageLocations();
report.append('\n')
.append("Under Construction Block:\n")
.append(blockNumber).append(". ").append(blkName)
.append(" len=").append(block.getNumBytes())
.append(" Expected_repl=" + storages.length);
String info=getReplicaInfo(storedBlock);
if (!info.isEmpty()){
report.append(" ").append(info);
BlockUnderConstructionFeature uc =
storedBlock.getUnderConstructionFeature();
if (uc != null) {
// BlockUnderConstructionFeature can be null, in case the block was
// in committed state, and the IBR came just after the check.
DatanodeStorageInfo[] storages = uc.getExpectedStorageLocations();
report.append('\n').append("Under Construction Block:\n")
.append(blockNumber).append(". ").append(blkName).append(" len=")
.append(block.getNumBytes())
.append(" Expected_repl=" + storages.length);
String info = getReplicaInfo(storedBlock);
if (!info.isEmpty()) {
report.append(" ").append(info);
}
}
}

Expand Down

0 comments on commit 62c8015

Please sign in to comment.