HADOOP-15801. ABFS: Fixing skipUserGroupMetadata in AzureBlobFileSystemStore.

Contributed by Da Zhou
This commit is contained in:
Steve Loughran 2018-10-02 11:42:52 +01:00
parent 43bc984891
commit a383ac47ca
No known key found for this signature in database
GPG Key ID: D22CF846DBB162A0

View File

@ -102,6 +102,8 @@ public class AzureBlobFileSystemStore {
private AbfsClient client;
private URI uri;
private final UserGroupInformation userGroupInformation;
private final String userName;
private final String primaryUserGroup;
private static final String DATE_TIME_PATTERN = "E, dd MMM yyyy HH:mm:ss 'GMT'";
private static final String XMS_PROPERTIES_ENCODING = "ISO-8859-1";
private static final int LIST_MAX_RESULTS = 5000;
@ -128,6 +130,15 @@ public AzureBlobFileSystemStore(URI uri, boolean isSecure, Configuration configu
}
this.userGroupInformation = userGroupInformation;
this.userName = userGroupInformation.getShortUserName();
if (!abfsConfiguration.getSkipUserGroupMetadataDuringInitialization()) {
primaryUserGroup = userGroupInformation.getPrimaryGroupName();
} else {
//Provide a default group name
primaryUserGroup = userName;
}
this.azureAtomicRenameDirSet = new HashSet<>(Arrays.asList(
abfsConfiguration.getAzureAtomicRenameDirs().split(AbfsHttpConstants.COMMA)));
@ -462,8 +473,8 @@ public FileStatus getFileStatus(final Path path) throws IOException {
final boolean hasAcl = AbfsPermission.isExtendedAcl(permissions);
return new VersionedFileStatus(
owner == null ? userGroupInformation.getUserName() : owner,
group == null ? userGroupInformation.getPrimaryGroupName() : group,
owner == null ? userName : owner,
group == null ? primaryUserGroup : group,
permissions == null ? new AbfsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)
: AbfsPermission.valueOf(permissions),
hasAcl,
@ -489,8 +500,8 @@ public FileStatus getFileStatus(final Path path) throws IOException {
final boolean hasAcl = AbfsPermission.isExtendedAcl(permissions);
return new VersionedFileStatus(
owner == null ? userGroupInformation.getUserName() : owner,
group == null ? userGroupInformation.getPrimaryGroupName() : group,
owner == null ? userName : owner,
group == null ? primaryUserGroup : group,
permissions == null ? new AbfsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)
: AbfsPermission.valueOf(permissions),
hasAcl,
@ -528,8 +539,8 @@ public FileStatus[] listStatus(final Path path) throws IOException {
long blockSize = abfsConfiguration.getAzureBlockSize();
for (ListResultEntrySchema entry : retrievedSchema.paths()) {
final String owner = entry.owner() == null ? userGroupInformation.getUserName() : entry.owner();
final String group = entry.group() == null ? userGroupInformation.getPrimaryGroupName() : entry.group();
final String owner = entry.owner() == null ? userName : entry.owner();
final String group = entry.group() == null ? primaryUserGroup : entry.group();
final FsPermission fsPermission = entry.permissions() == null
? new AbfsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)
: AbfsPermission.valueOf(entry.permissions());
@ -761,8 +772,8 @@ public AclStatus getAclStatus(final Path path) throws IOException {
: AbfsPermission.valueOf(permissions);
final AclStatus.Builder aclStatusBuilder = new AclStatus.Builder();
aclStatusBuilder.owner(owner == null ? userGroupInformation.getUserName() : owner);
aclStatusBuilder.group(group == null ? userGroupInformation.getPrimaryGroupName() : group);
aclStatusBuilder.owner(owner == null ? userName : owner);
aclStatusBuilder.group(group == null ? primaryUserGroup : group);
aclStatusBuilder.setPermission(fsPermission);
aclStatusBuilder.stickyBit(fsPermission.getStickyBit());