Repository: oozie Updated Branches: refs/heads/master 823ddbe64 -> 53b2f26bc
OOZIE-2775 Oozie server does not stop if there is an exception during service initalization at startup (asasvari) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/53b2f26b Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/53b2f26b Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/53b2f26b Branch: refs/heads/master Commit: 53b2f26bcae9b0ccabf224c4d08680bb0bc968b7 Parents: 823ddbe Author: Attila Sasvari <asasv...@cloudera.com> Authored: Wed Jan 24 09:57:30 2018 +0100 Committer: Attila Sasvari <asasv...@cloudera.com> Committed: Wed Jan 24 09:57:30 2018 +0100 ---------------------------------------------------------------------- .../java/org/apache/oozie/service/Services.java | 2 +- release-log.txt | 1 + .../oozie/server/EmbeddedOozieServer.java | 37 ++++++++++++++++---- .../oozie/server/guice/ServicesProvider.java | 9 +++-- 4 files changed, 38 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/53b2f26b/core/src/main/java/org/apache/oozie/service/Services.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/service/Services.java b/core/src/main/java/org/apache/oozie/service/Services.java index 1ca3bf5..7391605 100644 --- a/core/src/main/java/org/apache/oozie/service/Services.java +++ b/core/src/main/java/org/apache/oozie/service/Services.java @@ -304,7 +304,7 @@ public class Services { setService(entry.getValue().getClass()); } } catch (RuntimeException rex) { - log.fatal("Runtime Exception during Services Load. Check your list of '{0}' or '{1}'", + log.fatal("Runtime Exception during Services Load. Check your list of [{0}] or [{1}]", CONF_SERVICE_CLASSES, CONF_SERVICE_EXT_CLASSES, rex); throw new ServiceException(ErrorCode.E0103, rex.getMessage(), rex); } http://git-wip-us.apache.org/repos/asf/oozie/blob/53b2f26b/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 8f68ae9..38e4da2 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.0.0 release (trunk - unreleased) +OOZIE-2775 Oozie server does not stop if there is an exception during service initalization at startup (asasvari) OOZIE-3145 >git status< should be clean after >mvn test< was called (kmarton via gezapeti) OOZIE-3162 amend Precommit build fails to add comment to JIRA (asasvari) OOZIE-3159 Spark Action fails because of absence of hadoop mapreduce jar(s) (asasvari) http://git-wip-us.apache.org/repos/asf/oozie/blob/53b2f26b/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java b/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java index b6b59b6..a0c27b8 100644 --- a/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java +++ b/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java @@ -22,6 +22,7 @@ import com.google.common.base.Preconditions; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; +import com.google.inject.ProvisionException; import org.apache.hadoop.conf.Configuration; import org.apache.oozie.server.guice.OozieGuiceModule; import org.apache.oozie.service.ConfigurationService; @@ -199,6 +200,19 @@ public class EmbeddedOozieServer { LOG.info("Server started."); } + public void shutdown() throws Exception { + LOG.info("Shutting down."); + if (serviceController != null) { + serviceController.destroy(); + LOG.info("Oozie services stopped."); + } + + if (server != null) { + server.stop(); + LOG.info("Server stopped."); + } + } + public void join() throws InterruptedException { server.join(); } @@ -206,9 +220,11 @@ public class EmbeddedOozieServer { public void addShutdownHook() { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { - LOG.info("Shutting down."); - serviceController.destroy(); - LOG.info("Oozie services stopped."); + try { + shutdown(); + } catch (final Exception e) { + LOG.error(String.format("There were errors during shutdown. Error message: %s", e.getMessage())); + } } }); } @@ -216,14 +232,21 @@ public class EmbeddedOozieServer { public static void main(String[] args) throws Exception { final Injector guiceInjector = Guice.createInjector(new OozieGuiceModule()); - final EmbeddedOozieServer embeddedOozieServer = guiceInjector.getInstance(EmbeddedOozieServer.class); + EmbeddedOozieServer embeddedOozieServer = null; + try { + embeddedOozieServer = guiceInjector.getInstance(EmbeddedOozieServer.class); + } + catch (final ProvisionException ex) { + LOG.error(ex.getMessage()); + System.exit(1); + } - embeddedOozieServer.setup(); embeddedOozieServer.addShutdownHook(); + embeddedOozieServer.setup(); try { embeddedOozieServer.start(); - } catch (Exception e) { - LOG.error("Could not start EmbeddedOozieServer!", e); + } catch (final Exception e) { + LOG.error(String.format("Could not start EmbeddedOozieServer! Error message: %s", e.getMessage())); System.exit(1); } embeddedOozieServer.join(); http://git-wip-us.apache.org/repos/asf/oozie/blob/53b2f26b/server/src/main/java/org/apache/oozie/server/guice/ServicesProvider.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/oozie/server/guice/ServicesProvider.java b/server/src/main/java/org/apache/oozie/server/guice/ServicesProvider.java index cc4ed17..5e1f533 100644 --- a/server/src/main/java/org/apache/oozie/server/guice/ServicesProvider.java +++ b/server/src/main/java/org/apache/oozie/server/guice/ServicesProvider.java @@ -25,14 +25,17 @@ import org.apache.oozie.service.Services; class ServicesProvider implements Provider<Services> { @Override public Services get() { + Services oozieServices = null; try { - final Services oozieServices = new Services(); - + oozieServices = new Services(); oozieServices.init(); return oozieServices; } catch (ServiceException e) { - throw new ExceptionInInitializerError( + if (oozieServices != null) { + oozieServices.destroy(); + } + throw new IllegalStateException( String.format("Could not instantiate Oozie services. [e.message=%s]", e.getMessage())); } }