You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by vi...@apache.org on 2015/05/19 08:55:34 UTC
[2/2] hadoop git commit: HDFS-6348. SecondaryNameNode not terminating
properly on runtime exceptions (Contributed by Rakesh R)
HDFS-6348. SecondaryNameNode not terminating properly on runtime exceptions (Contributed by Rakesh R)
(cherry picked from commit 93972a332a9fc6390447fc5fc9785c98fb4c3344)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6dee42f6
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6dee42f6
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6dee42f6
Branch: refs/heads/branch-2
Commit: 6dee42f6dba12106b7218d068b8eaa5df8739b36
Parents: 5caea4c
Author: Vinayakumar B <vi...@apache.org>
Authored: Tue May 19 12:24:25 2015 +0530
Committer: Vinayakumar B <vi...@apache.org>
Committed: Tue May 19 12:25:00 2015 +0530
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 5 ++-
.../hdfs/server/namenode/SecondaryNameNode.java | 33 ++++++++++----------
.../hdfs/server/namenode/TestStartup.java | 18 ++++++++++-
3 files changed, 37 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6dee42f6/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 36c3fe0..07bbd36 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -1,4 +1,4 @@
-Hadoop HDFS Change Log
+ Hadoop HDFS Change Log
Release 2.8.0 - UNRELEASED
@@ -454,6 +454,9 @@ Release 2.8.0 - UNRELEASED
HDFS-8403. Eliminate retries in TestFileCreation
#testOverwriteOpenForWrite. (Arpit Agarwal via wheat9)
+ HDFS-6348. SecondaryNameNode not terminating properly on runtime exceptions
+ (Rakesh R via vinayakumarb)
+
Release 2.7.1 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6dee42f6/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
index b499e74..0fa1cd5 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
@@ -667,29 +667,28 @@ public class SecondaryNameNode implements Runnable,
opts.usage();
System.exit(0);
}
-
- StringUtils.startupShutdownMessage(SecondaryNameNode.class, argv, LOG);
- Configuration tconf = new HdfsConfiguration();
- SecondaryNameNode secondary = null;
+
try {
+ StringUtils.startupShutdownMessage(SecondaryNameNode.class, argv, LOG);
+ Configuration tconf = new HdfsConfiguration();
+ SecondaryNameNode secondary = null;
secondary = new SecondaryNameNode(tconf, opts);
- } catch (IOException ioe) {
- LOG.fatal("Failed to start secondary namenode", ioe);
- terminate(1);
- }
- if (opts != null && opts.getCommand() != null) {
- int ret = secondary.processStartupCommand(opts);
- terminate(ret);
- }
+ if (opts != null && opts.getCommand() != null) {
+ int ret = secondary.processStartupCommand(opts);
+ terminate(ret);
+ }
- if (secondary != null) {
- secondary.startCheckpointThread();
- secondary.join();
+ if (secondary != null) {
+ secondary.startCheckpointThread();
+ secondary.join();
+ }
+ } catch (Throwable e) {
+ LOG.fatal("Failed to start secondary namenode", e);
+ terminate(1);
}
}
-
-
+
public void startCheckpointThread() {
Preconditions.checkState(checkpointThread == null,
"Should not already have a thread");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6dee42f6/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java
index 08fde3e..4b2878e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartup.java
@@ -62,6 +62,8 @@ import org.apache.hadoop.hdfs.util.MD5FileUtils;
import org.apache.hadoop.io.MD5Hash;
import org.apache.hadoop.test.GenericTestUtils;
import org.apache.hadoop.test.PathUtils;
+import org.apache.hadoop.util.ExitUtil.ExitException;
+import org.apache.hadoop.util.ExitUtil;
import org.apache.hadoop.util.StringUtils;
import org.apache.log4j.Logger;
import org.junit.After;
@@ -103,6 +105,8 @@ public class TestStartup {
@Before
public void setUp() throws Exception {
+ ExitUtil.disableSystemExit();
+ ExitUtil.resetFirstExitException();
config = new HdfsConfiguration();
hdfsDir = new File(MiniDFSCluster.getBaseDirectory());
@@ -418,7 +422,19 @@ public class TestStartup {
cluster.shutdown();
}
}
-
+
+ @Test(timeout = 30000)
+ public void testSNNStartupWithRuntimeException() throws Exception {
+ String[] argv = new String[] { "-checkpoint" };
+ try {
+ SecondaryNameNode.main(argv);
+ fail("Failed to handle runtime exceptions during SNN startup!");
+ } catch (ExitException ee) {
+ GenericTestUtils.assertExceptionContains("ExitException", ee);
+ assertTrue("Didn't termiated properly ", ExitUtil.terminateCalled());
+ }
+ }
+
@Test
public void testCompression() throws IOException {
LOG.info("Test compressing image.");