He Xiaoqiao created HDFS-9334: --------------------------------- Summary: 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)