This is an automated email from the ASF dual-hosted git repository. joewitt pushed a commit to branch support/nifi-1.16 in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 958baa0bba657cc9b8b8b58e14c13e5b836e0344 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
