hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Nauroth (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-4701) race condition between block recovery and removal of block pool can cause block recovery thread to exit with NullPointerException
Date Tue, 16 Apr 2013 00:16:16 GMT

    [ https://issues.apache.org/jira/browse/HDFS-4701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13632406#comment-13632406
] 

Chris Nauroth commented on HDFS-4701:
-------------------------------------

The problem occurs in the code below in {{DataNode}}.  The last line is at risk for a {{NullPointerException}},
because the block pool ID may have already been removed from the {{BlockPoolManager}}.  In
this case, the call to {{BlockPoolManager#get}} would return null.

{code}
  /** Recover a block */
  private void recoverBlock(RecoveringBlock rBlock) throws IOException {
    ExtendedBlock block = rBlock.getBlock();
    String blookPoolId = block.getBlockPoolId();
    DatanodeID[] datanodeids = rBlock.getLocations();
    List<BlockRecord> syncList = new ArrayList<BlockRecord>(datanodeids.length);
    int errorCount = 0;

    //check generation stamps
    for(DatanodeID id : datanodeids) {
      try {
        BPOfferService bpos = blockPoolManager.get(blookPoolId);
        DatanodeRegistration bpReg = bpos.bpRegistration;
{code}

                
> race condition between block recovery and removal of block pool can cause block recovery
thread to exit with NullPointerException
> ---------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-4701
>                 URL: https://issues.apache.org/jira/browse/HDFS-4701
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: datanode
>    Affects Versions: 3.0.0
>            Reporter: Chris Nauroth
>
> I saw this happen once while shutting down a datanode: a NullPointerException thrown
from a block recovery thread.

--
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

Mime
View raw message