Yi Liu created HDFS-8428:
----------------------------

             Summary: Erasure Coding: Fix the NullPointerException when 
deleting file
                 Key: HDFS-8428
                 URL: https://issues.apache.org/jira/browse/HDFS-8428
             Project: Hadoop HDFS
          Issue Type: Sub-task
            Reporter: Yi Liu
            Assignee: Yi Liu


In HDFS, when removing some file, NN will also remove all its blocks from 
{{BlocksMap}}, and send {{DNA_INVALIDATE}} (invalidate blocks) commands to 
datanodes.  After datanodes successfully delete the block replicas, will report 
{{DELETED_BLOCK}} to NameNode.

snippet code logic in {{BlockManager#processIncrementalBlockReport}} is as 
following
{code}
case DELETED_BLOCK:
        removeStoredBlock(storageInfo, getStoredBlock(rdbi.getBlock()), node);
        ...
{code}
{code}
private void removeStoredBlock(DatanodeStorageInfo storageInfo, Block block,
      DatanodeDescriptor node) {
    if (shouldPostponeBlocksFromFuture &&
        namesystem.isGenStampInFuture(block)) {
      queueReportedBlock(storageInfo, block, null,
          QUEUE_REASON_FUTURE_GENSTAMP);
      return;
    }
    removeStoredBlock(getStoredBlock(block), node);
  }
{code}

In EC branch, we add {{getStoredBlock}}. There is {{NullPointerException}} when 
handling {{DELETED_BLOCK}} of incrementalBlockReport from DataNode after delete 
a file, since the block is already removed, we need to check.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to