Eli Collins created HDFS-3883:
---------------------------------

             Summary: DFSClient NPE due to missing block when opening a file
                 Key: HDFS-3883
                 URL: https://issues.apache.org/jira/browse/HDFS-3883
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: hdfs client
    Affects Versions: 1.0.0
            Reporter: Eli Collins
            Assignee: Eli Collins
            Priority: Minor


I saw the following NPE for a client on branch-1 that looks like it accessed a 
block not in the volume map, probably because the block was already deleted 
(otherwise the primary should have a block file). We should throw an IOE in 
this case.

DFSClient.java..
{code}
Block newBlock = primary.getBlockInfo(last.getBlock());
long newBlockSize = newBlock.getNumBytes();    <--------
{code}

>From getBlockInfo to getStoredBlock..
{code}
  public synchronized Block getStoredBlock(long blkid) throws IOException {
    File blockfile = findBlockFile(blkid);
    if (blockfile == null) {
      return null;
    }
{code}

Digging into findBlockFile..
{code}
  public synchronized File findBlockFile(long blockId) {
    final Block b = new Block(blockId);
    File blockfile = null;
    ActiveFile activefile = ongoingCreates.get(b);
    if (activefile != null) {
      blockfile = activefile.file;
    }
    if (blockfile == null) {
      blockfile = getFile(b);
    }
    if (blockfile == null) {
      if (DataNode.LOG.isDebugEnabled()) {
        DataNode.LOG.debug("ongoingCreates=" + ongoingCreates);
        DataNode.LOG.debug("volumeMap=" + volumeMap);
      }
    }
    return blockfile;
{code}

Into getFile..
{code}
  public synchronized File getFile(Block b) {
    DatanodeBlockInfo info = volumeMap.get(b);
    if (info != null) {
      return info.getFile();
    }
    return null;
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to