Repository: sqoop Updated Branches: refs/heads/sqoop2 a970e60e0 -> 0eb235241
SQOOP-1290 Sqoop2: Kill Tomcat in case that Sqoop Server fails to load (Jarek Jarcec Cecho via Venkat Ranganathan) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/0eb23524 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/0eb23524 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/0eb23524 Branch: refs/heads/sqoop2 Commit: 0eb2352411a60073591ed0f51d0f5673c216d6b9 Parents: a970e60 Author: Venkat Ranganathan <[email protected]> Authored: Mon Feb 24 10:58:29 2014 -0800 Committer: Venkat Ranganathan <[email protected]> Committed: Mon Feb 24 10:58:29 2014 -0800 ---------------------------------------------------------------------- .../apache/sqoop/core/ConfigurationConstants.java | 5 +++++ .../org/apache/sqoop/server/ServerInitializer.java | 15 ++++++++++++++- .../main/java/org/apache/sqoop/tools/ToolRunner.java | 4 ++++ 3 files changed, 23 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/0eb23524/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java b/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java index f225fcb..898ec73 100644 --- a/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java +++ b/core/src/main/java/org/apache/sqoop/core/ConfigurationConstants.java @@ -76,6 +76,11 @@ public final class ConfigurationConstants { public static final String FRAMEWORK_AUTO_UPGRADE = "org.apache.sqoop.framework.autoupgrade"; + /** + * Enable Sqoop App to kill Tomcat in case that it will fail to load. + */ + public static final String KILL_TOMCAT_ON_FAILURE = "sqoop.kill_tomcat_on_load_failure"; + private ConfigurationConstants() { // Disable explicit object creation } http://git-wip-us.apache.org/repos/asf/sqoop/blob/0eb23524/server/src/main/java/org/apache/sqoop/server/ServerInitializer.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/sqoop/server/ServerInitializer.java b/server/src/main/java/org/apache/sqoop/server/ServerInitializer.java index 44aea2e..a150e3a 100644 --- a/server/src/main/java/org/apache/sqoop/server/ServerInitializer.java +++ b/server/src/main/java/org/apache/sqoop/server/ServerInitializer.java @@ -17,6 +17,7 @@ */ package org.apache.sqoop.server; +import org.apache.sqoop.core.ConfigurationConstants; import org.apache.sqoop.core.SqoopServer; import javax.servlet.ServletContextEvent; @@ -33,6 +34,18 @@ public class ServerInitializer implements ServletContextListener { } public void contextInitialized(ServletContextEvent arg0) { - SqoopServer.initialize(); + try { + SqoopServer.initialize(); + } catch (Throwable ex) { + // We are assuming that by default we are running as the only app inside + // the tomcat and hence we want to try kill entire tomcat on our load failure. + if("true".equals(System.getProperty(ConfigurationConstants.KILL_TOMCAT_ON_FAILURE, "true"))) { + System.out.println("Sqoop failed to load:"); + ex.printStackTrace(System.out); + System.exit(1); + } + + throw new RuntimeException("Sqoop server failed to load.", ex); + } } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/0eb23524/tools/src/main/java/org/apache/sqoop/tools/ToolRunner.java ---------------------------------------------------------------------- diff --git a/tools/src/main/java/org/apache/sqoop/tools/ToolRunner.java b/tools/src/main/java/org/apache/sqoop/tools/ToolRunner.java index 73dc9c5..769c2b4 100644 --- a/tools/src/main/java/org/apache/sqoop/tools/ToolRunner.java +++ b/tools/src/main/java/org/apache/sqoop/tools/ToolRunner.java @@ -19,6 +19,7 @@ package org.apache.sqoop.tools; import org.apache.sqoop.common.VersionInfo; +import org.apache.sqoop.core.ConfigurationConstants; import org.apache.sqoop.tools.tool.BuiltinTools; import org.apache.sqoop.utils.ClassUtils; @@ -67,6 +68,9 @@ public final class ToolRunner { throw new RuntimeException("Can't get tool instance: " + args[0]); } + // We do want us to kill the Tomcat when running from tooling + System.setProperty(ConfigurationConstants.KILL_TOMCAT_ON_FAILURE, "false"); + System.out.println("Running tool: " + toolClass); if(tool.runTool(Arrays.copyOfRange(args, 1, args.length))) { System.out.println("Tool " + toolClass + " has finished correctly.");
