Yi Liu created HDFS-8418:
----------------------------
Summary: Fix the isNeededReplication calculation for Striped block
in NN
Key: HDFS-8418
URL: https://issues.apache.org/jira/browse/HDFS-8418
Project: Hadoop HDFS
Issue Type: Sub-task
Reporter: Yi Liu
Assignee: Yi Liu
Priority: Critical
Currently when calculating {{isNeededReplication}} for striped block, we use
BlockCollection#getPreferredBlockReplication to get expected replica number for
striped block. See an example:
{code}
public void checkReplication(BlockCollection bc) {
final short expected = bc.getPreferredBlockReplication();
for (BlockInfo block : bc.getBlocks()) {
final NumberReplicas n = countNodes(block);
if (isNeededReplication(block, expected, n.liveReplicas())) {
neededReplications.add(block, n.liveReplicas(),
n.decommissionedAndDecommissioning(), expected);
} else if (n.liveReplicas() > expected) {
processOverReplicatedBlock(block, expected, null, null);
}
}
}
{code}
But actually it's not correct, for example, if the length of striped file is
less than a cell, then the expected replica of the block should be {{1 +
parityBlkNum}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)