You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2022/08/23 17:53:19 UTC

[nifi] branch main updated: NIFI-10387: Fixed negative logic bug in scripted components (#6325)

This is an automated email from the ASF dual-hosted git repository.

markap14 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 6f0ca87304 NIFI-10387: Fixed negative logic bug in scripted components (#6325)
6f0ca87304 is described below

commit 6f0ca8730411d01e5c5c2f845a5387020aee60ba
Author: Matt Burgess <ma...@apache.org>
AuthorDate: Tue Aug 23 13:53:12 2022 -0400

    NIFI-10387: Fixed negative logic bug in scripted components (#6325)
---
 .../lookup/script/BaseScriptedLookupService.java   |  4 +--
 .../processors/script/InvokeScriptedProcessor.java |  4 +--
 .../record/sink/script/ScriptedRecordSink.java     |  4 +--
 .../rules/engine/script/ScriptedRulesEngine.java   |  4 +--
 .../handlers/script/ScriptedActionHandler.java     |  4 +--
 .../lookup/script/TestScriptedLookupService.groovy | 39 ++++++++++++++++++++++
 6 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
index 623796eb4b..3c34af2ad8 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/BaseScriptedLookupService.java
@@ -241,9 +241,9 @@ public class BaseScriptedLookupService extends AbstractScriptedControllerService
     public void setup() {
         if (scriptNeedsReload.get() || lookupService.get() == null) {
             if (ScriptingComponentHelper.isFile(scriptingComponentHelper.getScriptPath())) {
-                scriptNeedsReload.set(reloadScriptFile(scriptingComponentHelper.getScriptPath()));
+                scriptNeedsReload.set(!reloadScriptFile(scriptingComponentHelper.getScriptPath()));
             } else {
-                scriptNeedsReload.set(reloadScriptBody(scriptingComponentHelper.getScriptBody()));
+                scriptNeedsReload.set(!reloadScriptBody(scriptingComponentHelper.getScriptBody()));
             }
         }
     }
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
index 5cc4d65861..80abbcadd1 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
@@ -225,9 +225,9 @@ public class InvokeScriptedProcessor extends AbstractSessionFactoryProcessor {
     public void setup() {
         if (scriptNeedsReload.get() || processor.get() == null) {
             if (ScriptingComponentHelper.isFile(scriptingComponentHelper.getScriptPath())) {
-                scriptNeedsReload.set(reloadScriptFile(scriptingComponentHelper.getScriptPath()));
+                scriptNeedsReload.set(!reloadScriptFile(scriptingComponentHelper.getScriptPath()));
             } else {
-                scriptNeedsReload.set(reloadScriptBody(scriptingComponentHelper.getScriptBody()));
+                scriptNeedsReload.set(!reloadScriptBody(scriptingComponentHelper.getScriptBody()));
             }
         }
     }
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
index f17cb0e95f..0f5748ad9b 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
@@ -107,9 +107,9 @@ public class ScriptedRecordSink extends AbstractScriptedControllerService implem
     public void setup() {
         if (scriptNeedsReload.get() || recordSink.get() == null) {
             if (ScriptingComponentHelper.isFile(scriptingComponentHelper.getScriptPath())) {
-                scriptNeedsReload.set(reloadScriptFile(scriptingComponentHelper.getScriptPath()));
+                scriptNeedsReload.set(!reloadScriptFile(scriptingComponentHelper.getScriptPath()));
             } else {
-                scriptNeedsReload.set(reloadScriptBody(scriptingComponentHelper.getScriptBody()));
+                scriptNeedsReload.set(!reloadScriptBody(scriptingComponentHelper.getScriptBody()));
             }
         }
     }
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
index 5239761c25..b30b9ef2c9 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
@@ -78,9 +78,9 @@ public class ScriptedRulesEngine extends AbstractScriptedControllerService imple
     public void setup() {
         if (scriptNeedsReload.get() || rulesEngine.get() == null) {
             if (ScriptingComponentHelper.isFile(scriptingComponentHelper.getScriptPath())) {
-                scriptNeedsReload.set(reloadScriptFile(scriptingComponentHelper.getScriptPath()));
+                scriptNeedsReload.set(!reloadScriptFile(scriptingComponentHelper.getScriptPath()));
             } else {
-                scriptNeedsReload.set(reloadScriptBody(scriptingComponentHelper.getScriptBody()));
+                scriptNeedsReload.set(!reloadScriptBody(scriptingComponentHelper.getScriptBody()));
             }
         }
     }
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
index f81ade4ffb..4e5efd3b26 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
@@ -80,9 +80,9 @@ public class ScriptedActionHandler extends AbstractScriptedControllerService imp
     public void setup() {
         if (scriptNeedsReload.get() || actionHandler.get() == null) {
             if (ScriptingComponentHelper.isFile(scriptingComponentHelper.getScriptPath())) {
-                scriptNeedsReload.set(reloadScriptFile(scriptingComponentHelper.getScriptPath()));
+                scriptNeedsReload.set(!reloadScriptFile(scriptingComponentHelper.getScriptPath()));
             } else {
-                scriptNeedsReload.set(reloadScriptBody(scriptingComponentHelper.getScriptBody()));
+                scriptNeedsReload.set(!reloadScriptBody(scriptingComponentHelper.getScriptBody()));
             }
         }
     }
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/groovy/org/apache/nifi/lookup/script/TestScriptedLookupService.groovy b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/groovy/org/apache/nifi/lookup/script/TestScriptedLookupService.groovy
index abb3daf024..01f4454032 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/groovy/org/apache/nifi/lookup/script/TestScriptedLookupService.groovy
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/groovy/org/apache/nifi/lookup/script/TestScriptedLookupService.groovy
@@ -46,8 +46,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue
  */
 class TestScriptedLookupService {
     private static final String GROOVY_SCRIPT = "test_lookup_inline.groovy"
+    private static final String ALTERNATE_GROOVY_SCRIPT = "test_simple_lookup_inline.groovy"
     private static final Path SOURCE_PATH = Paths.get("src/test/resources/groovy", GROOVY_SCRIPT)
+    private static final Path ALTERNATE_SOURCE_PATH = Paths.get("src/test/resources/groovy", ALTERNATE_GROOVY_SCRIPT)
     private static final Path TARGET_PATH = Paths.get("target", GROOVY_SCRIPT)
+    private static final Path ALTERNATE_TARGET_PATH = Paths.get("target", ALTERNATE_GROOVY_SCRIPT)
     private static final Logger logger = LoggerFactory.getLogger(TestScriptedLookupService)
     ScriptedLookupService scriptedLookupService
     def scriptingComponent
@@ -59,7 +62,9 @@ class TestScriptedLookupService {
             logger.info("[${name?.toUpperCase()}] ${(args as List).join(" ")}")
         }
         Files.copy(SOURCE_PATH, TARGET_PATH, StandardCopyOption.REPLACE_EXISTING)
+        Files.copy(ALTERNATE_SOURCE_PATH, ALTERNATE_TARGET_PATH, StandardCopyOption.REPLACE_EXISTING)
         TARGET_PATH.toFile().deleteOnExit()
+        ALTERNATE_TARGET_PATH.toFile().deleteOnExit()
     }
 
     @BeforeEach
@@ -96,6 +101,40 @@ class TestScriptedLookupService {
         assertFalse(opt.present)
     }
 
+    @Test
+    void testLookupServiceScriptReload() {
+        final TestRunner runner = TestRunners.newTestRunner(new AbstractProcessor() {
+            @Override
+            public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
+            }
+        });
+
+        runner.addControllerService("lookupService", scriptedLookupService)
+        runner.setProperty(scriptedLookupService, "Script Engine", "Groovy")
+        runner.setProperty(scriptedLookupService, ScriptingComponentUtils.SCRIPT_BODY, (String) null)
+        runner.setProperty(scriptedLookupService, ScriptingComponentUtils.SCRIPT_FILE, ALTERNATE_TARGET_PATH.toString())
+        runner.setProperty(scriptedLookupService, ScriptingComponentUtils.MODULES, (String) null)
+        // This call to setup should fail loading the script but should mark that the script should be reloaded
+        scriptedLookupService.setup()
+        // This prevents the (lookupService == null) check from passing, in order to force the reload from the
+        // scriptNeedsReload variable specifically
+        scriptedLookupService.lookupService.set(new MockScriptedLookupService())
+
+        runner.enableControllerService(scriptedLookupService)
+
+        MockFlowFile mockFlowFile = new MockFlowFile(1L)
+        InputStream inStream = new ByteArrayInputStream('Flow file content not used'.bytes)
+
+        Optional opt = scriptedLookupService.lookup(['key':'Hello'])
+        assertTrue(opt.present)
+        assertEquals('Hi', opt.get())
+        opt = scriptedLookupService.lookup(['key':'World'])
+        assertTrue(opt.present)
+        assertEquals('there', opt.get())
+        opt = scriptedLookupService.lookup(['key':'Not There'])
+        assertFalse(opt.present)
+    }
+
     class MockScriptedLookupService extends ScriptedLookupService implements AccessibleScriptingComponentHelper {
 
         @Override