DENG FEI created HDFS-12832:
-------------------------------

             Summary: INode.getFullPathName may throw 
ArrayIndexOutOfBoundsException lead to NameNode exit
                 Key: HDFS-12832
                 URL: https://issues.apache.org/jira/browse/HDFS-12832
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: namenode
    Affects Versions: 3.0.0-beta1, 2.7.4
            Reporter: DENG FEI
            Priority: Critical


{code:title=INode.java|borderStyle=solid}
public String getFullPathName() {
    // Get the full path name of this inode.
    if (isRoot()) {
      return Path.SEPARATOR;
    }
    // compute size of needed bytes for the path
    int idx = 0;
    for (INode inode = this; inode != null; inode = inode.getParent()) {
      // add component + delimiter (if not tail component)
      idx += inode.getLocalNameBytes().length + (inode != this ? 1 : 0);
    }
    byte[] path = new byte[idx];
    for (INode inode = this; inode != null; inode = inode.getParent()) {
      if (inode != this) {
        path[--idx] = Path.SEPARATOR_CHAR;
      }
      byte[] name = inode.getLocalNameBytes();
      idx -= name.length;
      System.arraycopy(name, 0, path, idx, name.length);
    }
    return DFSUtil.bytes2String(path);
  }
{code}
We found ArrayIndexOutOfBoundsException at 
_{color:#707070}System.arraycopy(name, 0, path, idx, name.length){color}_ when 
ReplicaMonitor work ,and the NameNode will quit.

It seems the two loop is not synchronized, the path's length is changed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to