HADOOP-17059. ArrayIndexOfboundsException in ViewFileSystem#listStatus. Contributed by hemanthboyina

This commit is contained in:
Mingliang Liu 2020-06-08 10:11:30 -07:00
parent ac307fe20d
commit 543075b845
No known key found for this signature in database
GPG Key ID: BC2FB8C6908A0C16
2 changed files with 23 additions and 1 deletions

View File

@ -1221,7 +1221,7 @@ public FileStatus[] listStatus(Path f) throws AccessControlException,
} else { } else {
result[i++] = new FileStatus(0, true, 0, 0, result[i++] = new FileStatus(0, true, 0, 0,
creationTime, creationTime, PERMISSION_555, creationTime, creationTime, PERMISSION_555,
ugi.getShortUserName(), ugi.getGroupNames()[0], ugi.getShortUserName(), ugi.getPrimaryGroupName(),
new Path(inode.fullPath).makeQualified( new Path(inode.fullPath).makeQualified(
myUri, null)); myUri, null));
} }

View File

@ -56,6 +56,7 @@
import org.apache.hadoop.fs.RemoteIterator; import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.fs.FileContextTestHelper.fileType; import org.apache.hadoop.fs.FileContextTestHelper.fileType;
import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsConstants; import org.apache.hadoop.fs.FsConstants;
import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.UnresolvedLinkException; import org.apache.hadoop.fs.UnresolvedLinkException;
@ -69,6 +70,7 @@
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.test.GenericTestUtils;
import org.apache.hadoop.test.LambdaTestUtils;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
@ -1001,4 +1003,24 @@ static AbstractFileSystem getMockFs(URI uri) {
return mockFs; return mockFs;
} }
} }
@Test
public void testListStatusWithNoGroups() throws Exception {
final UserGroupInformation userUgi = UserGroupInformation
.createUserForTesting("user@HADOOP.COM", new String[] {});
userUgi.doAs(new PrivilegedExceptionAction<Object>() {
@Override
public Object run() throws Exception {
String clusterName = Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE;
URI viewFsUri =
new URI(FsConstants.VIEWFS_SCHEME, clusterName, "/", null, null);
FileSystem vfs = FileSystem.get(viewFsUri, conf);
LambdaTestUtils.intercept(IOException.class,
"There is no primary group for UGI", () -> vfs
.listStatus(new Path(viewFsUri.toString() + "internalDir")));
return null;
}
});
}
} }