Github user JPercivall commented on a diff in the pull request:
https://github.com/apache/nifi-minifi/pull/10#discussion_r59926141
--- Diff:
minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java
---
@@ -567,6 +586,104 @@ public void dump(final File dumpFile) throws
IOException {
}
}
+ public void reload() throws IOException {
+ final Logger logger = cmdLogger;
+ final Integer port = getCurrentPort(logger);
+ if (port == null) {
+ logger.info("Apache MiNiFi is not currently running");
+ return;
+ }
+
+ // indicate that a reload command is in progress
+ final File reloadLockFile = getReloadFile(logger);
+ if (!reloadLockFile.exists()) {
+ reloadLockFile.createNewFile();
+ }
+
+ final Properties nifiProps = loadProperties(logger);
+ final String secretKey = nifiProps.getProperty("secret.key");
+ final String pid = nifiProps.getProperty("pid");
+
+ try (final Socket socket = new Socket()) {
+ logger.debug("Connecting to MiNiFi instance");
+ socket.setSoTimeout(10000);
+ socket.connect(new InetSocketAddress("localhost", port));
+ logger.debug("Established connection to MiNiFi instance.");
+ socket.setSoTimeout(10000);
+
+ logger.debug("Sending RELOAD Command to port {}", port);
+ final OutputStream out = socket.getOutputStream();
+ out.write((RELOAD_CMD + " " + secretKey +
"\n").getBytes(StandardCharsets.UTF_8));
+ out.flush();
+ socket.shutdownOutput();
+
+ final InputStream in = socket.getInputStream();
+ int lastChar;
+ final StringBuilder sb = new StringBuilder();
+ while ((lastChar = in.read()) > -1) {
+ sb.append((char) lastChar);
+ }
+ final String response = sb.toString().trim();
+
+ logger.debug("Received response to RELOAD command: {}",
response);
+
+ if (RELOAD_CMD.equals(response)) {
+ logger.info("Apache MiNiFi has accepted the Reload Command
and is reloading");
+
+ if (pid != null) {
+ final Properties bootstrapProperties =
getBootstrapProperties();
+
+ String gracefulShutdown =
bootstrapProperties.getProperty(GRACEFUL_SHUTDOWN_PROP,
DEFAULT_GRACEFUL_SHUTDOWN_VALUE);
+ int gracefulShutdownSeconds;
+ try {
+ gracefulShutdownSeconds =
Integer.parseInt(gracefulShutdown);
+ } catch (final NumberFormatException nfe) {
+ gracefulShutdownSeconds =
Integer.parseInt(DEFAULT_GRACEFUL_SHUTDOWN_VALUE);
+ }
+
+ final long startWait = System.nanoTime();
+ while (isProcessRunning(pid, logger)) {
+ logger.info("Waiting for Apache MiNiFi to finish
shutting down...");
+ final long waitNanos = System.nanoTime() -
startWait;
+ final long waitSeconds =
TimeUnit.NANOSECONDS.toSeconds(waitNanos);
+ if (waitSeconds >= gracefulShutdownSeconds &&
gracefulShutdownSeconds > 0) {
+ if (isProcessRunning(pid, logger)) {
+ logger.warn("MiNiFi has not finished
shutting down after {} seconds. Killing process.", gracefulShutdownSeconds);
--- End diff --
While I understand that underneath the bootstrap is waiting for the MiNiFi
instance to shutdown before it starts it again, these 2 log messages (646 an
651) could be confusing when the user is just expecting it to reload.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---