This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 6eff8a9262 NIFI-13045 Support Bootstrap Listen Port property in MiNiFi
6eff8a9262 is described below
commit 6eff8a9262522b9458b195d15b01358538dba912
Author: Ferenc Kis <[email protected]>
AuthorDate: Mon Apr 15 15:14:32 2024 +0200
NIFI-13045 Support Bootstrap Listen Port property in MiNiFi
This closes #8648
Signed-off-by: David Handermann <[email protected]>
---
.../nifi/minifi/bootstrap/command/StartRunner.java | 25 +++++++++++++++++++---
.../service/MiNiFiExecCommandProvider.java | 3 ++-
.../minifi/bootstrap/service/MiNiFiListener.java | 6 +++---
.../nifi/minifi/bootstrap/BootstrapListener.java | 4 ++--
.../apache/nifi/minifi/StandardMiNiFiServer.java | 3 ++-
5 files changed, 31 insertions(+), 10 deletions(-)
diff --git
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/command/StartRunner.java
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/command/StartRunner.java
index af331fcc2b..f4d3ad8d18 100644
---
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/command/StartRunner.java
+++
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/command/StartRunner.java
@@ -25,6 +25,7 @@ import static
org.apache.nifi.minifi.bootstrap.RunMiNiFi.STATUS_FILE_PID_KEY;
import static org.apache.nifi.minifi.bootstrap.RunMiNiFi.UNINITIALIZED;
import static org.apache.nifi.minifi.bootstrap.Status.ERROR;
import static org.apache.nifi.minifi.bootstrap.Status.OK;
+import static
org.apache.nifi.minifi.bootstrap.service.MiNiFiExecCommandProvider.NIFI_BOOTSTRAP_LISTEN_PORT;
import static
org.apache.nifi.minifi.commons.api.MiNiFiCommandState.FULLY_APPLIED;
import static
org.apache.nifi.minifi.commons.api.MiNiFiCommandState.NOT_APPLIED_WITH_RESTART;
import static org.apache.nifi.minifi.commons.api.MiNiFiConstants.RAW_EXTENSION;
@@ -129,7 +130,7 @@ public class StartRunner implements CommandRunner {
generateMiNiFiProperties(bootstrapFileProvider.getProtectedBootstrapProperties(),
confDir);
regenerateFlowConfiguration(bootstrapProperties.getProperty(MiNiFiProperties.NIFI_MINIFI_FLOW_CONFIG.getKey()));
- Process process = startMiNiFi();
+ Process process = startMiNiFi(bootstrapProperties);
try {
while (true) {
if (process.isAlive()) {
@@ -279,15 +280,33 @@ public class StartRunner implements CommandRunner {
}
}
- private Process startMiNiFi() throws IOException {
+ private Process startMiNiFi(BootstrapProperties bootstrapProperties)
throws IOException {
+ int bootstrapListenPort =
parseBootstrapListenPort(bootstrapProperties);
+
MiNiFiListener listener = new MiNiFiListener();
- listenPort = listener.start(runMiNiFi, bootstrapFileProvider,
configurationChangeListener);
+ listenPort = listener.start(runMiNiFi, bootstrapListenPort,
bootstrapFileProvider, configurationChangeListener);
CMD_LOGGER.info("Starting Apache MiNiFi...");
return startMiNiFiProcess(getProcessBuilder());
}
+ private int parseBootstrapListenPort(BootstrapProperties
bootstrapProperties) {
+ String bootstrapListenPort =
bootstrapProperties.getProperty(NIFI_BOOTSTRAP_LISTEN_PORT);
+ int parsedBootstrapListenPort =
Optional.ofNullable(bootstrapListenPort)
+ .map(String::trim)
+ .map(port -> {
+ try {
+ return Integer.parseInt(port);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Unable to parse
Bootstrap listen port, please provide a valid port for " +
NIFI_BOOTSTRAP_LISTEN_PORT);
+ }
+ })
+ .orElse(0);
+ CMD_LOGGER.info("Boostrap listen port {}", parsedBootstrapListenPort);
+ return parsedBootstrapListenPort;
+ }
+
private ProcessBuilder getProcessBuilder() throws IOException {
ProcessBuilder builder = new ProcessBuilder();
File workingDir = getWorkingDir();
diff --git
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiExecCommandProvider.java
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiExecCommandProvider.java
index 0e99379a6d..8c0035ff7c 100644
---
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiExecCommandProvider.java
+++
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiExecCommandProvider.java
@@ -45,6 +45,8 @@ public class MiNiFiExecCommandProvider {
public static final String DEFAULT_BOOTSTRAP_LOG_FILE_NAME =
"minifi-bootstrap";
public static final String DEFAULT_LOG_FILE_EXTENSION = "log";
+ public static final String NIFI_BOOTSTRAP_LISTEN_PORT =
"nifi.bootstrap.listen.port";
+
private static final String PROPERTIES_FILE_KEY = "props.file";
private static final String LIB_DIR_KEY = "lib.dir";
private static final String JAVA_COMMAND_KEY = "java";
@@ -63,7 +65,6 @@ public class MiNiFiExecCommandProvider {
private static final String MINIFI_CLASS_NAME = "MiNiFi";
private static final String MINIFI_FULLY_QUALIFIED_CLASS_NAME =
"org.apache.nifi.minifi." + MINIFI_CLASS_NAME;
private static final String SYSTEM_PROPERTY_TEMPLATE = "-D%s=%s";
- private static final String NIFI_BOOTSTRAP_LISTEN_PORT =
"nifi.bootstrap.listen.port";
private static final String APP = "app";
private static final String CLASSPATH = "-classpath";
private static final String BIN_DIRECTORY = "bin";
diff --git
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiListener.java
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiListener.java
index 90f90201cd..911265579d 100644
---
a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiListener.java
+++
b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/service/MiNiFiListener.java
@@ -38,13 +38,13 @@ public class MiNiFiListener {
private Listener listener;
private ServerSocket serverSocket;
- public int start(RunMiNiFi runner, BootstrapFileProvider
bootstrapFileProvider, ConfigurationChangeListener configurationChangeListener)
throws IOException {
+ public int start(RunMiNiFi runner, int listenPort, BootstrapFileProvider
bootstrapFileProvider, ConfigurationChangeListener configurationChangeListener)
throws IOException {
serverSocket = new ServerSocket();
- serverSocket.bind(new InetSocketAddress("localhost", 0));
+ serverSocket.bind(new InetSocketAddress("localhost", listenPort));
listener = new Listener(serverSocket, new BootstrapCodec(runner,
bootstrapFileProvider, configurationChangeListener));
Thread listenThread = new Thread(listener);
- listenThread.setName("MiNiFi listener");
+ listenThread.setName("Listen to MiNiFi");
listenThread.setDaemon(true);
listenThread.start();
return serverSocket.getLocalPort();
diff --git
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/bootstrap/BootstrapListener.java
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/bootstrap/BootstrapListener.java
index 07791b1ea8..911ddc44a7 100644
---
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/bootstrap/BootstrapListener.java
+++
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-runtime/src/main/java/org/apache/nifi/minifi/bootstrap/BootstrapListener.java
@@ -73,11 +73,11 @@ public class BootstrapListener implements
BootstrapCommunicator {
registerHandlers();
}
- public void start() throws IOException {
+ public void start(int listenPort) throws IOException {
logger.debug("Starting Bootstrap Listener to communicate with
Bootstrap Port {}", bootstrapPort);
ServerSocket serverSocket = new ServerSocket();
- serverSocket.bind(new InetSocketAddress("localhost", 0));
+ serverSocket.bind(new InetSocketAddress("localhost", listenPort));
serverSocket.setSoTimeout(2000);
int localPort = serverSocket.getLocalPort();
diff --git
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/java/org/apache/nifi/minifi/StandardMiNiFiServer.java
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/java/org/apache/nifi/minifi/StandardMiNiFiServer.java
index 1b648a5a0b..132be38e59 100644
---
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/java/org/apache/nifi/minifi/StandardMiNiFiServer.java
+++
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/java/org/apache/nifi/minifi/StandardMiNiFiServer.java
@@ -127,7 +127,8 @@ public class StandardMiNiFiServer extends
HeadlessNiFiServer implements MiNiFiSe
}
bootstrapListener = new BootstrapListener(this, port);
- bootstrapListener.start();
+ NiFiProperties niFiProperties = getNiFiProperties();
+
bootstrapListener.start(niFiProperties.getDefaultListenerBootstrapPort());
} catch (IOException e) {
throw new UncheckedIOException("Failed to start MiNiFi because
of Bootstrap listener initialization error", e);
} catch (NumberFormatException e) {