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.");

Reply via email to