You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by cn...@apache.org on 2014/03/04 07:15:57 UTC
svn commit: r1573881 - in
/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs: ./
src/main/java/org/apache/hadoop/hdfs/server/namenode/
src/test/java/org/apache/hadoop/hdfs/server/namenode/ src/test/resources/
Author: cnauroth
Date: Tue Mar 4 06:15:56 2014
New Revision: 1573881
URL: http://svn.apache.org/r1573881
Log:
HDFS-6039. Merging change r1573879 from trunk to branch-2.
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testAclCLI.xml
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1573881&r1=1573880&r2=1573881&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Mar 4 06:15:56 2014
@@ -419,6 +419,9 @@ Release 2.4.0 - UNRELEASED
HDFS-6028. Print clearer error message when user attempts to delete required
mask entry from ACL. (cnauroth)
+ HDFS-6039. Uploading a File under a Dir with default acls throws "Duplicated
+ ACLFeature". (cnauroth)
+
Release 2.3.1 - UNRELEASED
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java?rev=1573881&r1=1573880&r2=1573881&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java (original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java Tue Mar 4 06:15:56 2014
@@ -2246,6 +2246,7 @@ public class FSDirectory implements Clos
final Quota.Counts counts = child.computeQuotaUsage();
updateCount(iip, pos,
counts.get(Quota.NAMESPACE), counts.get(Quota.DISKSPACE), checkQuota);
+ boolean isRename = (child.getParent() != null);
final INodeDirectory parent = inodes[pos-1].asDirectory();
boolean added = false;
try {
@@ -2260,7 +2261,9 @@ public class FSDirectory implements Clos
-counts.get(Quota.NAMESPACE), -counts.get(Quota.DISKSPACE));
} else {
iip.setINode(pos - 1, child.getParent());
- AclStorage.copyINodeDefaultAcl(child);
+ if (!isRename) {
+ AclStorage.copyINodeDefaultAcl(child);
+ }
addToInodeMap(child);
}
return added;
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java?rev=1573881&r1=1573880&r2=1573881&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java (original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java Tue Mar 4 06:15:56 2014
@@ -1064,6 +1064,45 @@ public abstract class FSAclBaseTest {
}
@Test
+ public void testDefaultAclRenamedFile() throws Exception {
+ Path dirPath = new Path(path, "dir");
+ FileSystem.mkdirs(fs, dirPath, FsPermission.createImmutable((short)0750));
+ List<AclEntry> aclSpec = Lists.newArrayList(
+ aclEntry(DEFAULT, USER, "foo", ALL));
+ fs.setAcl(dirPath, aclSpec);
+ Path filePath = new Path(path, "file1");
+ fs.create(filePath).close();
+ fs.setPermission(filePath, FsPermission.createImmutable((short)0640));
+ Path renamedFilePath = new Path(dirPath, "file1");
+ fs.rename(filePath, renamedFilePath);
+ AclEntry[] expected = new AclEntry[] { };
+ AclStatus s = fs.getAclStatus(renamedFilePath);
+ AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(expected, returned);
+ assertPermission(renamedFilePath, (short)0640);
+ assertAclFeature(renamedFilePath, false);
+ }
+
+ @Test
+ public void testDefaultAclRenamedDir() throws Exception {
+ Path dirPath = new Path(path, "dir");
+ FileSystem.mkdirs(fs, dirPath, FsPermission.createImmutable((short)0750));
+ List<AclEntry> aclSpec = Lists.newArrayList(
+ aclEntry(DEFAULT, USER, "foo", ALL));
+ fs.setAcl(dirPath, aclSpec);
+ Path subdirPath = new Path(path, "subdir");
+ FileSystem.mkdirs(fs, subdirPath, FsPermission.createImmutable((short)0750));
+ Path renamedSubdirPath = new Path(dirPath, "subdir");
+ fs.rename(subdirPath, renamedSubdirPath);
+ AclEntry[] expected = new AclEntry[] { };
+ AclStatus s = fs.getAclStatus(renamedSubdirPath);
+ AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(expected, returned);
+ assertPermission(renamedSubdirPath, (short)0750);
+ assertAclFeature(renamedSubdirPath, false);
+ }
+
+ @Test
public void testSkipAclEnforcementPermsDisabled() throws Exception {
Path bruceDir = new Path(path, "bruce");
Path bruceFile = new Path(bruceDir, "file");
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testAclCLI.xml
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testAclCLI.xml?rev=1573881&r1=1573880&r2=1573881&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testAclCLI.xml (original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testAclCLI.xml Tue Mar 4 06:15:56 2014
@@ -972,5 +972,55 @@
</comparator>
</comparators>
</test>
+ <test>
+ <description>copyFromLocal: copying file into a directory with a default ACL</description>
+ <test-commands>
+ <command>-fs NAMENODE -mkdir /dir1</command>
+ <command>-fs NAMENODE -setfacl -m default:user:charlie:rwx /dir1</command>
+ <command>-fs NAMENODE -copyFromLocal CLITEST_DATA/data15bytes /dir1/data15bytes</command>
+ <command>-fs NAMENODE -getfacl /dir1/data15bytes</command>
+ </test-commands>
+ <cleanup-commands>
+ <command>-fs NAMENODE -rm -R /dir1</command>
+ </cleanup-commands>
+ <comparators>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^# file: /dir1/data15bytes$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^# owner: USERNAME$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^# group: supergroup$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^user::rw-$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^user:charlie:rwx\t#effective:r--$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^group::r-x\t#effective:r--$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^mask::r--$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpComparator</type>
+ <expected-output>^other::r--$</expected-output>
+ </comparator>
+ <comparator>
+ <type>RegexpAcrossOutputComparator</type>
+ <expected-output>.*(?!default).*</expected-output>
+ </comparator>
+ </comparators>
+ </test>
</tests>
</configuration>