[
https://issues.apache.org/jira/browse/MINIFI-14?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15243480#comment-15243480
]
ASF GitHub Bot commented on MINIFI-14:
--------------------------------------
Github user JPercivall commented on a diff in the pull request:
https://github.com/apache/nifi-minifi/pull/10#discussion_r59930579
--- 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 --
Yeah, just adding something about it shutting down in order to reload would
be fine.
> Add Listener/Notifier Logic to RunMiNiFi
> ----------------------------------------
>
> Key: MINIFI-14
> URL: https://issues.apache.org/jira/browse/MINIFI-14
> Project: Apache NiFi MiNiFi
> Issue Type: Sub-task
> Components: Processing Configuration
> Reporter: Joseph Percivall
> Assignee: Aldrin Piri
> Fix For: 0.0.1
>
>
> The interface for the ConfigurationChangeNotifier and
> ConfigurationChangeListener is done as part of MINIFI-4 but configuration and
> implementation in RunMiNiFi needs to be added.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)