cuiyang created HDFS-8459: ----------------------------- Summary: Question: Why Namenode doesn't judge the status of replicas when convert block status from commited to complete? Key: HDFS-8459 URL: https://issues.apache.org/jira/browse/HDFS-8459 Project: Hadoop HDFS Issue Type: Improvement Reporter: cuiyang
Why Namenode doesn't judge the status of replicas when convert block status from commited to complete? When client finished write block and call namenode.complete(), namenode do things as follow(in BlockManager::commitOrCompleteLastBlock): final boolean b = commitBlock((BlockInfoUnderConstruction)lastBlock, commitBlock); if(countNodes(lastBlock).liveReplicas() >= minReplication) completeBlock(bc, bc.numBlocks()-1, false); return b; But it doesn't care how many replicas which status is finalized! Because if there is no one replica which status is not finalized, the block should not convert to complete status! According to the appendDesign3.pdf (https://issues.apache.org/jira/secure/attachment/12445209/appendDesign3.pdf): Complete: A complete block is a block whose length and GS are finalized and NameNode has seen a GS/len matched finalized replica of the block. -- This message was sent by Atlassian JIRA (v6.3.4#6332)