[ 
https://issues.apache.org/jira/browse/HDFS-9334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

He Xiaoqiao resolved HDFS-9334.
-------------------------------
    Resolution: Duplicate

HDFS-6830 has fixed this.

> NameNode crash caused by ArrayIndexOutOfBoundsException
> -------------------------------------------------------
>
>                 Key: HDFS-9334
>                 URL: https://issues.apache.org/jira/browse/HDFS-9334
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.4.1
>            Reporter: He Xiaoqiao
>            Assignee: He Xiaoqiao
>
> when remove block from list of blocks by method {{listRemove}} in 
> {{BlockInfo.java}}, and {{findStorageInfo(storage)}} return -1 means not 
> found, {{prev.setNext(prev.findStorageInfo(storage), next)}} or 
> {{next.setPrevious(next.findStorageInfo(storage), prev)}} could throw 
> ArrayIndexOutOfBoundsException cause NameNode Process exit.
> {code:title=BlockInfo.java}
>   BlockInfo listRemove(BlockInfo head, DatanodeStorageInfo storage) {
>     if(head == null)
>       return null;
>     int dnIndex = this.findStorageInfo(storage);
>     if(dnIndex < 0) // this block is not on the data-node list
>       return head;
>     BlockInfo next = this.getNext(dnIndex);
>     BlockInfo prev = this.getPrevious(dnIndex);
>     this.setNext(dnIndex, null);
>     this.setPrevious(dnIndex, null);
>     if(prev != null)
>       prev.setNext(prev.findStorageInfo(storage), next);
>     if(next != null)
>       next.setPrevious(next.findStorageInfo(storage), prev);
>     if(this == head)  // removing the head
>       head = next;
>     return head;
>   }
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to