You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Lin Yiqun (JIRA)" <ji...@apache.org> on 2016/01/19 12:53:39 UTC
[jira] [Created] (HDFS-9662) Wrong checking penultimate block
replicated in FSNamesystem
Lin Yiqun created HDFS-9662:
-------------------------------
Summary: Wrong checking penultimate block replicated in FSNamesystem
Key: HDFS-9662
URL: https://issues.apache.org/jira/browse/HDFS-9662
Project: Hadoop HDFS
Issue Type: Bug
Affects Versions: 2.7.1
Reporter: Lin Yiqun
Assignee: Lin Yiqun
There is a bug in checking penultimate block replicated in FSNamesystem.
{code}
/**
* Check that the indicated file's blocks are present and
* replicated. If not, return false. If checkall is true, then check
* all blocks, otherwise check only penultimate block.
*/
boolean checkFileProgress(String src, INodeFile v, boolean checkall) {
assert hasReadLock();
if (checkall) {
return blockManager.checkBlocksProperlyReplicated(src, v
.getBlocks());
} else {
// check the penultimate block of this file
BlockInfo b = v.getPenultimateBlock();
return b == null ||
blockManager.checkBlocksProperlyReplicated(
src, new BlockInfo[] { b });
}
}
{code}
When the param checkall is true, the checking operations is true.But if checkall is false, it will check the penultimate block of this file. And if the BlockInfo b is null, it will return true by this code, but actually it should be return false because the penultimate block is not replicated and has no blockInfo.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)