[
https://issues.apache.org/jira/browse/HDFS-13527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
hemanthboyina reassigned HDFS-13527:
------------------------------------
Assignee: hemanthboyina
> craeteLocatedBlock IsCorrupt logic is fault when all block are corrupt.
> -----------------------------------------------------------------------
>
> Key: HDFS-13527
> URL: https://issues.apache.org/jira/browse/HDFS-13527
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs, namenode
> Affects Versions: 3.2.0
> Reporter: maobaolong
> Assignee: hemanthboyina
> Priority: Major
>
> the step is:
> 1. put a small file into hdfs FILEPATH
> 2. remove block replicas in all datanode blockpool.
> 3. restart datanode
> 4. restart namenode( leave safemode)
> 5. hdfs fsck FILEPATH -files -blocks -locations
> 6. namenode think this block is not corrupt block.
> the code logic is:
> {code:java}
> // get block locations
> NumberReplicas numReplicas = countNodes(blk);
> final int numCorruptNodes = numReplicas.corruptReplicas();
> final int numCorruptReplicas = corruptReplicas.numCorruptReplicas(blk);
> if (numCorruptNodes != numCorruptReplicas) {
> LOG.warn("Inconsistent number of corrupt replicas for {}"
> + " blockMap has {} but corrupt replicas map has {}",
> blk, numCorruptNodes, numCorruptReplicas);
> }
> final int numNodes = blocksMap.numNodes(blk);
> final boolean isCorrupt;
> if (blk.isStriped()) {
> BlockInfoStriped sblk = (BlockInfoStriped) blk;
> isCorrupt = numCorruptReplicas != 0 &&
> numReplicas.liveReplicas() < sblk.getRealDataBlockNum();
> } else {
> isCorrupt = numCorruptReplicas != 0 && numCorruptReplicas == numNodes;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.2#803003)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]