From 092cadb3302a037ede95d7cb7739cc6b1208c078 Mon Sep 17 00:00:00 2001 From: Aldrin Piri Date: Wed, 20 Apr 2016 17:13:35 -0400 Subject: [PATCH] MINIFI-26 Establishing specific handling of RELOAD events such that notifiers are not closed on configuration changes. --- .../org/apache/nifi/minifi/BootstrapListener.java | 13 ++++++++++--- .../main/java/org/apache/nifi/minifi/MiNiFi.java | 12 ++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/BootstrapListener.java b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/BootstrapListener.java index 42e1ad457..8e5802fad 100644 --- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/BootstrapListener.java +++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/BootstrapListener.java @@ -83,6 +83,13 @@ public void start() throws IOException { sendCommand("PORT", new String[]{String.valueOf(localPort), secretKey}); } + public void reload() throws IOException { + if (listener != null) { + listener.stop(); + } + sendCommand("RELOAD", new String[]{}); + } + public void stop() throws IOException { if (listener != null) { listener.stop(); @@ -190,12 +197,12 @@ public void run() { case RELOAD: logger.info("Received RELOAD request from Bootstrap"); echoReload(socket.getOutputStream()); - nifi.shutdownHook(); + nifi.shutdownHook(true); return; case SHUTDOWN: logger.info("Received SHUTDOWN request from Bootstrap"); echoShutdown(socket.getOutputStream()); - nifi.shutdownHook(); + nifi.shutdownHook(false); return; case DUMP: logger.info("Received DUMP request from Bootstrap"); @@ -379,7 +386,7 @@ private BootstrapRequest readRequest(final InputStream in) throws IOException { private static class BootstrapRequest { - public static enum RequestType { + public enum RequestType { RELOAD, SHUTDOWN, DUMP, diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/MiNiFi.java b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/MiNiFi.java index 1a1c0fe61..669acdcdc 100644 --- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/MiNiFi.java +++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/MiNiFi.java @@ -67,7 +67,7 @@ public void uncaughtException(final Thread t, final Throwable e) { @Override public void run() { // shutdown the jetty server - shutdownHook(); + shutdownHook(true); } })); @@ -146,7 +146,7 @@ public void run() { } } - protected void shutdownHook() { + protected void shutdownHook(boolean isReload) { try { this.shutdown = true; @@ -155,11 +155,15 @@ protected void shutdownHook() { nifiServer.stop(); } if (bootstrapListener != null) { - bootstrapListener.stop(); + if (isReload) { + bootstrapListener.reload(); + } else { + bootstrapListener.stop(); + } } logger.info("Jetty web server shutdown completed (nicely or otherwise)."); } catch (final Throwable t) { - logger.warn("Problem occured ensuring Jetty web server was properly terminated due to " + t); + logger.warn("Problem occurred ensuring Jetty web server was properly terminated due to " + t); } }