Author: umamahesh Date: Thu Jul 3 16:14:13 2014 New Revision: 1607687 URL: http://svn.apache.org/r1607687 Log: Merge from trunk. HDFS-6620. Snapshot docs should specify about preserve options with cp command. Contributed by Stephen Chu.
Modified: hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java Modified: hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1607687&r1=1607686&r2=1607687&view=diff ============================================================================== --- hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Jul 3 16:14:13 2014 @@ -239,6 +239,9 @@ Release 2.5.0 - UNRELEASED HDFS-6610. TestShortCircuitLocalRead tests sometimes timeout on slow machines. (Charles Lamb via wang) + HDFS-6620. Snapshot docs should specify about preserve options with cp command + (Stephen Chu via umamahesh) + OPTIMIZATIONS HDFS-6214. Webhdfs has poor throughput for files >2GB (daryn) Modified: hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml?rev=1607687&r1=1607686&r2=1607687&view=diff ============================================================================== --- hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml (original) +++ hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml Thu Jul 3 16:14:13 2014 @@ -97,7 +97,9 @@ <li>Listing the files in snapshot <code>s0</code>: <source>hdfs dfs -ls /foo/.snapshot/s0</source></li> <li>Copying a file from snapshot <code>s0</code>: - <source>hdfs dfs -cp /foo/.snapshot/s0/bar /tmp</source></li> + <source>hdfs dfs -cp -ptopax /foo/.snapshot/s0/bar /tmp</source> + <p>Note that this example uses the preserve option to preserve + timestamps, ownership, permission, ACLs and XAttrs.</p></li> </ul> </subsection> </section> Modified: hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java?rev=1607687&r1=1607686&r2=1607687&view=diff ============================================================================== --- hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java (original) +++ hadoop/common/branches/branch-2.5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java Thu Jul 3 16:14:13 2014 @@ -26,6 +26,7 @@ import java.util.Map; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.FsShell; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.XAttrSetFlag; import org.apache.hadoop.fs.permission.FsPermission; @@ -38,6 +39,7 @@ import org.apache.hadoop.hdfs.protocol.S import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter; import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.util.ToolRunner; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; @@ -57,6 +59,7 @@ public class TestXAttrWithSnapshot { private static int pathCount = 0; private static Path path, snapshotPath; private static String snapshotName; + private final int SUCCESS = 0; // XAttrs private static final String name1 = "user.a1"; private static final byte[] value1 = { 0x31, 0x32, 0x33 }; @@ -352,6 +355,26 @@ public class TestXAttrWithSnapshot { } /** + * Test that users can copy a snapshot while preserving its xattrs. + */ + @Test (timeout = 120000) + public void testCopySnapshotShouldPreserveXAttrs() throws Exception { + FileSystem.mkdirs(hdfs, path, FsPermission.createImmutable((short) 0700)); + hdfs.setXAttr(path, name1, value1); + hdfs.setXAttr(path, name2, value2); + SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName); + Path snapshotCopy = new Path(path.toString() + "-copy"); + String[] argv = new String[] { "-cp", "-px", snapshotPath.toUri().toString(), + snapshotCopy.toUri().toString() }; + int ret = ToolRunner.run(new FsShell(conf), argv); + assertEquals("cp -px is not working on a snapshot", SUCCESS, ret); + + Map<String, byte[]> xattrs = hdfs.getXAttrs(snapshotCopy); + assertArrayEquals(value1, xattrs.get(name1)); + assertArrayEquals(value2, xattrs.get(name2)); + } + + /** * Initialize the cluster, wait for it to become active, and get FileSystem * instances for our test users. *