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: [email protected]
For additional commands, e-mail: [email protected]