This is an automated email from the ASF dual-hosted git repository.
mattyb149 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 4450f4ce50 NIFI-9941 - fix handling of ReportingTask stop request
4450f4ce50 is described below
commit 4450f4ce50f23e5fc185a2597b3f891cbc7f820f
Author: Paul Grey <[email protected]>
AuthorDate: Wed Apr 20 15:06:04 2022 -0400
NIFI-9941 - fix handling of ReportingTask stop request
Signed-off-by: Matthew Burgess <[email protected]>
This closes #5985
---
.../org/apache/nifi/controller/scheduling/LifecycleState.java | 10 +++++++++-
.../org/apache/nifi/controller/tasks/ReportingTaskWrapper.java | 4 +++-
.../src/test/resources/conf/clustered/node1/nifi.properties | 2 +-
.../src/test/resources/conf/clustered/node2/nifi.properties | 2 +-
.../src/test/resources/conf/default/nifi.properties | 2 +-
5 files changed, 15 insertions(+), 5 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/scheduling/LifecycleState.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/scheduling/LifecycleState.java
index c5b78c95fd..7aecae33ca 100644
---
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/scheduling/LifecycleState.java
+++
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/scheduling/LifecycleState.java
@@ -40,6 +40,14 @@ public class LifecycleState {
private volatile boolean terminated = false;
private final Map<ActiveProcessSessionFactory, Object>
activeProcessSessionFactories = new WeakHashMap<>();
+ public synchronized boolean tryIncrementActiveThreadCount(final
ActiveProcessSessionFactory sessionFactory) {
+ if ((terminated) || (!scheduled.get())) {
+ return false;
+ }
+ incrementActiveThreadCount(sessionFactory);
+ return true;
+ }
+
public synchronized int incrementActiveThreadCount(final
ActiveProcessSessionFactory sessionFactory) {
if (terminated) {
throw new TerminatedTaskException();
@@ -80,7 +88,7 @@ public class LifecycleState {
return scheduled.get();
}
- public void setScheduled(final boolean scheduled) {
+ public synchronized void setScheduled(final boolean scheduled) {
this.scheduled.set(scheduled);
mustCallOnStoppedMethods.set(true);
diff --git
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
index 58ce022501..b42a47e546 100644
---
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
+++
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
@@ -39,7 +39,9 @@ public class ReportingTaskWrapper implements Runnable {
@Override
public synchronized void run() {
- lifecycleState.incrementActiveThreadCount(null);
+ if (!lifecycleState.tryIncrementActiveThreadCount(null)) {
+ return;
+ }
try (final NarCloseable narCloseable =
NarCloseable.withComponentNarLoader(extensionManager,
taskNode.getReportingTask().getClass(), taskNode.getIdentifier())) {
taskNode.getReportingTask().onTrigger(taskNode.getReportingContext());
} catch (final Throwable t) {
diff --git
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/nifi.properties
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/nifi.properties
index 071f863a0f..4544f2fc3b 100644
---
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/nifi.properties
+++
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/nifi.properties
@@ -84,7 +84,7 @@ nifi.content.viewer.url=../nifi-content-viewer/
# Provenance Repository Properties
nifi.provenance.repository.implementation=org.apache.nifi.provenance.WriteAheadProvenanceRepository
-nifi.provenance.repository.debug.frequency=1_000_000
+nifi.provenance.repository.debug.frequency=1000000
# Persistent Provenance Repository Properties
nifi.provenance.repository.directory.default=./provenance_repository
diff --git
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/nifi.properties
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/nifi.properties
index 4420403e9c..acd5c6707c 100644
---
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/nifi.properties
+++
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/nifi.properties
@@ -84,7 +84,7 @@ nifi.content.viewer.url=../nifi-content-viewer/
# Provenance Repository Properties
nifi.provenance.repository.implementation=org.apache.nifi.provenance.WriteAheadProvenanceRepository
-nifi.provenance.repository.debug.frequency=1_000_000
+nifi.provenance.repository.debug.frequency=1000000
# Persistent Provenance Repository Properties
nifi.provenance.repository.directory.default=./provenance_repository
diff --git
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/nifi.properties
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/nifi.properties
index 27ad177583..7b3de1452f 100644
---
a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/nifi.properties
+++
b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/nifi.properties
@@ -84,7 +84,7 @@ nifi.content.viewer.url=../nifi-content-viewer/
# Provenance Repository Properties
nifi.provenance.repository.implementation=org.apache.nifi.provenance.WriteAheadProvenanceRepository
-nifi.provenance.repository.debug.frequency=1_000_000
+nifi.provenance.repository.debug.frequency=1000000
# Persistent Provenance Repository Properties
nifi.provenance.repository.directory.default=./provenance_repository