NIFI-7404: Fixed invalid script processors upon thread termination
Signed-off-by: Pierre Villard <pierre.villard.fr@gmail.com>
This closes #4238.
diff --git a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
index e0bfbbc..93935d0 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
@@ -28,6 +28,7 @@
import org.apache.nifi.annotation.documentation.CapabilityDescription;
import org.apache.nifi.annotation.documentation.SeeAlso;
import org.apache.nifi.annotation.documentation.Tags;
+import org.apache.nifi.annotation.lifecycle.OnAdded;
import org.apache.nifi.annotation.lifecycle.OnScheduled;
import org.apache.nifi.annotation.lifecycle.OnStopped;
import org.apache.nifi.components.PropertyDescriptor;
@@ -271,6 +272,14 @@
scriptingComponentHelper.stop();
}
+ @OnAdded
+ public void added() {
+ // Create the resources whether or not they have been created already, this method is guaranteed to have the instance classloader set
+ // as the thread context class loader. Other methods that call createResources() may be called from other threads with different
+ // classloaders
+ scriptingComponentHelper.createResources();
+ }
+
@Override
public Collection<SearchResult> search(SearchContext context) {
Collection<SearchResult> results = new ArrayList<>();
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 2790f83..196e78c 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
@@ -41,6 +41,7 @@
import org.apache.nifi.annotation.documentation.CapabilityDescription;
import org.apache.nifi.annotation.documentation.SeeAlso;
import org.apache.nifi.annotation.documentation.Tags;
+import org.apache.nifi.annotation.lifecycle.OnAdded;
import org.apache.nifi.annotation.lifecycle.OnScheduled;
import org.apache.nifi.annotation.lifecycle.OnStopped;
import org.apache.nifi.components.PropertyDescriptor;
@@ -567,6 +568,14 @@
}
}
+ @OnAdded
+ public void added() {
+ // Create the resources whether or not they have been created already, this method is guaranteed to have the instance classloader set
+ // as the thread context class loader. Other methods that call createResources() may be called from other threads with different
+ // classloaders
+ scriptingComponentHelper.createResources();
+ }
+
@OnStopped
public void stop(ProcessContext context) {
invokeScriptedProcessorMethod("onStopped", context);