Repository: hadoop
Updated Branches:
refs/heads/branch-2 9e9c3a511 -> 9d6b873d3
HDFS-11717. Add unit test for HDFS-11709 StandbyCheckpointer should handle
non-existing legacyOivImageDir gracefully. Contributed by Erik Krogen.
(cherry picked from commit d9014bda93760f223789d2ec9f5e35f40de157d4)
Conflicts:
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9d6b873d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9d6b873d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9d6b873d
Branch: refs/heads/branch-2
Commit: 9d6b873d3c249aa76420ab03ceefc6180295915f
Parents: 9e9c3a5
Author: Erik Krogen <[email protected]>
Authored: Tue May 2 17:56:19 2017 -0700
Committer: Konstantin V Shvachko <[email protected]>
Committed: Tue May 2 18:39:37 2017 -0700
----------------------------------------------------------------------
.../server/namenode/ha/StandbyCheckpointer.java | 2 +-
.../namenode/ha/TestStandbyCheckpoints.java | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d6b873d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java
----------------------------------------------------------------------
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java
index 5c09043..c5c2ef3 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyCheckpointer.java
@@ -193,7 +193,7 @@ public class StandbyCheckpointer {
try {
img.saveLegacyOIVImage(namesystem, outputDir, canceler);
} catch (IOException ioe) {
- LOG.error("Exception encountered while saving legacy OIV image; "
+ LOG.warn("Exception encountered while saving legacy OIV image; "
+ "continuing with other checkpointing steps", ioe);
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d6b873d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
----------------------------------------------------------------------
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
index a2eea09..0a4e4d1 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestStandbyCheckpoints.java
@@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
+import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DFSConfigKeys;
import org.apache.hadoop.hdfs.DFSTestUtil;
@@ -485,6 +486,25 @@ public class TestStandbyCheckpoints {
t.join();
}
+ /**
+ * Test that checkpointing is still successful even if an issue
+ * was encountered while writing the legacy OIV image.
+ */
+ @Test(timeout=300000)
+ public void testCheckpointSucceedsWithLegacyOIVException() throws Exception {
+ // Delete the OIV image dir to cause an IOException while saving
+ FileUtil.fullyDelete(tmpOivImgDir);
+
+ doEdits(0, 10);
+ HATestUtil.waitForStandbyToCatchUp(nn0, nn1);
+ // Once the standby catches up, it should notice that it needs to
+ // do a checkpoint and save one to its local directories.
+ HATestUtil.waitForCheckpoint(cluster, 1, ImmutableList.of(12));
+
+ // It should also upload it back to the active.
+ HATestUtil.waitForCheckpoint(cluster, 0, ImmutableList.of(12));
+ }
+
private void doEdits(int start, int stop) throws IOException {
for (int i = start; i < stop; i++) {
Path p = new Path("/test" + i);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]