Author: cmccabe Date: Fri Apr 11 22:43:15 2014 New Revision: 1586791 URL: http://svn.apache.org/r1586791 Log: HDFS-6232. OfflineEditsViewer throws a NPE on edits containing ACL modifications (ajisakaa via cmccabe)
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/ (props changed) hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/ (props changed) 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/ (props changed) hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project:r1586790 Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs:r1586790 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=1586791&r1=1586790&r2=1586791&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 Fri Apr 11 22:43:15 2014 @@ -134,6 +134,9 @@ Release 2.4.1 - UNRELEASED HDFS-6229. Race condition in failover can cause RetryCache fail to work. (jing9) + HDFS-6232. OfflineEditsViewer throws a NPE on edits containing ACL + modifications (ajisakaa via cmccabe) + Release 2.4.0 - 2014-04-07 INCOMPATIBLE CHANGES Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java:r1586790 Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.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/FSEditLogOp.java?rev=1586791&r1=1586790&r2=1586791&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java Fri Apr 11 22:43:15 2014 @@ -4084,7 +4084,9 @@ public abstract class FSEditLogOp { contentHandler.startElement("", "", "ENTRY", new AttributesImpl()); XMLUtils.addSaxString(contentHandler, "SCOPE", e.getScope().name()); XMLUtils.addSaxString(contentHandler, "TYPE", e.getType().name()); - XMLUtils.addSaxString(contentHandler, "NAME", e.getName()); + if (e.getName() != null) { + XMLUtils.addSaxString(contentHandler, "NAME", e.getName()); + } fsActionToXml(contentHandler, e.getPermission()); contentHandler.endElement("", "", "ENTRY"); } @@ -4100,7 +4102,7 @@ public abstract class FSEditLogOp { AclEntry e = new AclEntry.Builder() .setScope(AclEntryScope.valueOf(s.getValue("SCOPE"))) .setType(AclEntryType.valueOf(s.getValue("TYPE"))) - .setName(s.getValue("NAME")) + .setName(s.getValueOrNull("NAME")) .setPermission(fsActionFromXml(s)).build(); aclEntries.add(e); } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java?rev=1586791&r1=1586790&r2=1586791&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java Fri Apr 11 22:43:15 2014 @@ -32,6 +32,9 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystem.Statistics; import org.apache.hadoop.fs.Options.Rename; import org.apache.hadoop.fs.permission.AclEntry; +import org.apache.hadoop.fs.permission.AclEntryScope; +import org.apache.hadoop.fs.permission.AclEntryType; +import org.apache.hadoop.fs.permission.FsAction; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.hdfs.MiniDFSCluster.NameNodeInfo; import org.apache.hadoop.hdfs.client.HdfsDataInputStream; @@ -57,7 +60,6 @@ import org.apache.hadoop.hdfs.server.nam .ConfiguredFailoverProxyProvider; import org.apache.hadoop.hdfs.server.protocol.DatanodeRegistration; import org.apache.hadoop.hdfs.server.protocol.DatanodeStorage; -import org.apache.hadoop.hdfs.web.TestWebHDFSForHA; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.nativeio.NativeIO; import org.apache.hadoop.net.NetUtils; @@ -1124,7 +1126,33 @@ public class DFSTestUtil { // OP_REMOVE_CACHE_POOL filesystem.removeCachePool("pool1"); // OP_SET_ACL - filesystem.setAcl(pathConcatTarget, Lists.<AclEntry> newArrayList()); + List<AclEntry> aclEntryList = Lists.newArrayList(); + aclEntryList.add( + new AclEntry.Builder() + .setPermission(FsAction.READ_WRITE) + .setScope(AclEntryScope.ACCESS) + .setType(AclEntryType.USER) + .build()); + aclEntryList.add( + new AclEntry.Builder() + .setName("user") + .setPermission(FsAction.READ_WRITE) + .setScope(AclEntryScope.ACCESS) + .setType(AclEntryType.USER) + .build()); + aclEntryList.add( + new AclEntry.Builder() + .setPermission(FsAction.WRITE) + .setScope(AclEntryScope.ACCESS) + .setType(AclEntryType.GROUP) + .build()); + aclEntryList.add( + new AclEntry.Builder() + .setPermission(FsAction.NONE) + .setScope(AclEntryScope.ACCESS) + .setType(AclEntryType.OTHER) + .build()); + filesystem.setAcl(pathConcatTarget, aclEntryList); } public static void abortStream(DFSOutputStream out) throws IOException {