This is an automated email from the ASF dual-hosted git repository.

weichiu pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c92b498  HDFS-14148. HDFS OIV ReverseXML SnapshotSection parser throws 
exception when there are more than one snapshottable directory (#1274) 
Contributed by Siyao Meng.
c92b498 is described below

commit c92b49876a078ce7fb4e2a852e315de5b6410082
Author: Siyao Meng <[email protected]>
AuthorDate: Mon Aug 12 17:26:20 2019 -0700

    HDFS-14148. HDFS OIV ReverseXML SnapshotSection parser throws exception 
when there are more than one snapshottable directory (#1274) Contributed by 
Siyao Meng.
---
 .../tools/offlineImageViewer/OfflineImageReconstructor.java    |  8 +++++---
 .../hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java  | 10 ++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageReconstructor.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageReconstructor.java
index 89f6dcc..4bb8c07 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageReconstructor.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageReconstructor.java
@@ -1353,9 +1353,11 @@ class OfflineImageReconstructor {
         if (sd == null) {
           break;
         }
-        Long dir = sd.removeChildLong(SNAPSHOT_SECTION_DIR);
-        sd.verifyNoRemainingKeys("<dir>");
-        bld.addSnapshottableDir(dir);
+        Long dir;
+        while ((dir = sd.removeChildLong(SNAPSHOT_SECTION_DIR)) != null) {
+          // Add all snapshottable directories, one by one
+          bld.addSnapshottableDir(dir);
+        }
       }
       header.verifyNoRemainingKeys("SnapshotSection");
       bld.build().writeDelimitedTo(out);
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
index 67ad4cd..f780516 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
@@ -288,6 +288,16 @@ public class TestOfflineImageViewer {
       hdfs.truncate(file1, 1);
       writtenFiles.put(file1.toString(), hdfs.getFileStatus(file1));
 
+      // HDFS-14148: Create a second snapshot-enabled directory. This can cause
+      // TestOfflineImageViewer#testReverseXmlRoundTrip to fail before the 
patch
+      final Path snapshotDir2 = new Path("/snapshotDir2");
+      hdfs.mkdirs(snapshotDir2);
+      // Simply enable snapshot on it, no need to create one
+      hdfs.allowSnapshot(snapshotDir2);
+      dirCount++;
+      writtenFiles.put(snapshotDir2.toString(),
+          hdfs.getFileStatus(snapshotDir2));
+
       // Set XAttrs so the fsimage contains XAttr ops
       final Path xattr = new Path("/xattr");
       hdfs.mkdirs(xattr);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to