You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2021/12/13 18:43:15 UTC
[nifi] 11/22: NIFI-9389 - NPE guard for ExecuteProcess on no OnTriggered NIFI-9389 - NPE guard for ExecuteProcess on no OnTriggered
This is an automated email from the ASF dual-hosted git repository.
joewitt pushed a commit to branch support/nifi-1.15
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit bb0696645e979d3fd38004cf387a6c1f6ad89981
Author: Paul Grey <gr...@yahoo.com>
AuthorDate: Fri Nov 19 14:34:57 2021 -0500
NIFI-9389 - NPE guard for ExecuteProcess on no OnTriggered
NIFI-9389 - NPE guard for ExecuteProcess on no OnTriggered
---
.../org/apache/nifi/util/StandardProcessorTestRunner.java | 2 +-
.../org/apache/nifi/processors/standard/ExecuteProcess.java | 2 +-
.../apache/nifi/processors/standard/TestExecuteProcess.java | 11 +++++++++++
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java b/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
index 7de3bbe..27d642e 100644
--- a/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
+++ b/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
@@ -187,7 +187,7 @@ public class StandardProcessorTestRunner implements TestRunner {
@Override
public void run(final int iterations, final boolean stopOnFinish, final boolean initialize, final long runWait) {
- if (iterations < 1) {
+ if (iterations < 0) {
throw new IllegalArgumentException();
}
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteProcess.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteProcess.java
index ffc8032..244d5aa 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteProcess.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteProcess.java
@@ -207,7 +207,7 @@ public class ExecuteProcess extends AbstractProcessor {
try {
executor.shutdown();
} finally {
- if (this.externalProcess.isAlive()) {
+ if ((this.externalProcess != null) && (this.externalProcess.isAlive())) {
this.getLogger().info("Process hasn't terminated, forcing the interrupt");
this.externalProcess.destroyForcibly();
}
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
index a5a08f0..5972caf 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
@@ -313,4 +313,15 @@ public class TestExecuteProcess {
.anyMatch(m -> m.getMsg().contains("Failed to create process due to")));
}
+ /**
+ * On configuration of this processor to run only on primary cluster node, other nodes call
+ * {@link org.apache.nifi.annotation.lifecycle.OnUnscheduled} method after an invocation (Start/Stop or RunOnce),
+ * causing an NPE. NPE guard added; test for this situation.
+ */
+ @Test
+ public void testProcessorNotScheduled() {
+ final TestRunner runner = TestRunners.newTestRunner(ExecuteProcess.class);
+ runner.setProperty(ExecuteProcess.COMMAND, "ls");
+ runner.run(0);
+ }
}