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