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 <gre...@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);
+    }
 }

Reply via email to