[nifi] branch main updated: NIFI-12122 Corrected test for Parameter Context updating

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory 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 61c856a54c NIFI-12122 Corrected test for Parameter Context updating
61c856a54c is described below

commit 61c856a54c56a1180a621bc8f17f0ce63044fcc8
Author: exceptionfactory 
AuthorDate: Fri Oct 13 22:55:53 2023 -0500

NIFI-12122 Corrected test for Parameter Context updating

Signed-off-by: David Handermann 
---
 .../flow/synchronization/StandardVersionedComponentSynchronizerTest.java | 1 +
 1 file changed, 1 insertion(+)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java
index 0f508004a3..b663517bbf 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java
@@ -1131,6 +1131,7 @@ public class StandardVersionedComponentSynchronizerTest {
 
 final VersionedParameterContext parameterContext = new 
VersionedParameterContext();
 parameterContext.setName("My Params");
+parameterContext.setDescription("Context Description");
 parameterContext.setParameters(Collections.emptySet());
 
 final Map parameterContextMap = new 
HashMap<>();



[nifi] branch support/nifi-1.x updated: NIFI-12122 Corrected TestFlowController references

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
 new 1cb7614b0b NIFI-12122 Corrected TestFlowController references
1cb7614b0b is described below

commit 1cb7614b0b5fe02ed883e3fcfaf7212aa5f20984
Author: Joe Gresock 
AuthorDate: Fri Oct 6 13:33:23 2023 -0500

NIFI-12122 Corrected TestFlowController references

- Adjusted XmlFlowSynchronizer method invocation for backported changes

Signed-off-by: David Handermann 
---
 .../src/main/java/org/apache/nifi/controller/XmlFlowSynchronizer.java   | 2 +-
 .../src/test/java/org/apache/nifi/controller/TestFlowController.java| 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/XmlFlowSynchronizer.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/XmlFlowSynchronizer.java
index ddb86cfafb..1248688a25 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/XmlFlowSynchronizer.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/XmlFlowSynchronizer.java
@@ -574,7 +574,7 @@ public class XmlFlowSynchronizer implements 
FlowSynchronizer {
 parameterProviderConfiguration = new 
StandardParameterProviderConfiguration(configurationDTO.getParameterProviderId(),
 configurationDTO.getParameterGroupName(), 
configurationDTO.getSynchronized());
 }
-final ParameterContext context = 
flowManager.createParameterContext(dto.getId(), dto.getName(), parameters, 
referencedIds, parameterProviderConfiguration);
+final ParameterContext context = 
flowManager.createParameterContext(dto.getId(), dto.getName(), 
dto.getDescription(), parameters, referencedIds, 
parameterProviderConfiguration);
 context.setDescription(dto.getDescription());
 return context;
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/TestFlowController.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/TestFlowController.java
index fc0e4b7bd1..db281d5b7f 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/TestFlowController.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/TestFlowController.java
@@ -513,6 +513,8 @@ public class TestFlowController {
 final String flow = IOUtils.toString(new FileInputStream(flowFile), 
StandardCharsets.UTF_8);
 final DataFlow proposedDataFlow = new 
StandardDataFlow(flow.getBytes(StandardCharsets.UTF_8), null, 
authFingerprint.getBytes(StandardCharsets.UTF_8), Collections.emptySet());
 
+final VersionedFlowSynchronizer flowSynchronizer = new 
VersionedFlowSynchronizer(extensionManager,
+nifiProperties.getFlowConfigurationFile(), new 
FlowConfigurationArchiveManager(nifiProperties));
 try {
 controller.synchronize(flowSynchronizer, proposedDataFlow, 
mock(FlowService.class), BundleUpdateStrategy.IGNORE_BUNDLE);
 controller.initializeFlow();



[nifi] 02/02: NIFI-12160 Kafka Connect: Check for NAR unpacking before starting

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 19153a7609f7c1a4a229d3cf9186903f1b2da86a
Author: Peter Gyori 
AuthorDate: Tue Oct 3 14:42:29 2023 +0200

NIFI-12160 Kafka Connect: Check for NAR unpacking before starting

Check that required NAR files are unpacked completely before starting the 
Kafka Connector

This closes #7832

Signed-off-by: David Handermann 
(cherry picked from commit b2e3898e171b89e25b5e06f6ee849bb3edabbf9a)
---
 .../kafka/connect/WorkingDirectoryUtilsTest.java   | 222 +
 .../kafka/connect/StatelessKafkaConnectorUtil.java |  10 +-
 .../nifi/kafka/connect/WorkingDirectoryUtils.java  | 100 ++
 3 files changed, 329 insertions(+), 3 deletions(-)

diff --git 
a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
 
b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
new file mode 100644
index 00..e98fcaabb4
--- /dev/null
+++ 
b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.kafka.connect;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.io.CleanupMode.ALWAYS;
+
+public class WorkingDirectoryUtilsTest {
+
+@Test
+public void testDeleteNonexistentFile(@TempDir(cleanup = ALWAYS) File 
tempDir) {
+File nonexistentFile = new File(tempDir, "testFile");
+
+WorkingDirectoryUtils.purgeDirectory(nonexistentFile);
+
+assertFalse(nonexistentFile.exists());
+}
+
+@Test
+public void testDeleteFlatFile(@TempDir(cleanup = ALWAYS) File tempDir) 
throws IOException {
+File file = new File(tempDir, "testFile");
+file.createNewFile();
+
+WorkingDirectoryUtils.purgeDirectory(file);
+
+assertFalse(file.exists());
+}
+
+@Test
+public void testDeleteDirectoryWithContents(@TempDir(cleanup = ALWAYS) 
File tempDir) throws IOException {
+File directory = new File(tempDir, "directory");
+File subDirectory = new File(directory, "subDirectory");
+File subDirectoryContent = new File(subDirectory, 
"subDirectoryContent");
+File directoryContent = new File(directory, "directoryContent");
+
+directory.mkdir();
+subDirectory.mkdir();
+subDirectoryContent.createNewFile();
+directoryContent.createNewFile();
+
+WorkingDirectoryUtils.purgeDirectory(directory);
+
+assertFalse(directory.exists());
+}
+
+@Test
+public void testPurgeUnpackedNarsEmptyRootDirectory(@TempDir(cleanup = 
ALWAYS) File tempDir) {
+File rootDirectory = new File(tempDir, "rootDirectory");
+
+rootDirectory.mkdir();
+
+WorkingDirectoryUtils.purgeIncompleteUnpackedNars(rootDirectory);
+
+assertTrue(rootDirectory.exists());
+}
+
+@Test
+public void 
testPurgeUnpackedNarsRootDirectoryWithFilesOnly(@TempDir(cleanup = ALWAYS) File 
tempDir) throws IOException {
+File rootDirectory = new File(tempDir, "rootDirectory");
+File directoryContent1 = new File(rootDirectory, "file1");
+File directoryContent2 = new File(rootDirectory, "file2");
+
+rootDirectory.mkdir();
+directoryContent1.createNewFile();
+directoryContent2.createNewFile();
+
+WorkingDirectoryUtils.purgeIncompleteUnpackedNars(rootDirectory);
+
+assertTrue(rootDirectory.exists() && directoryContent1.exists() && 
directoryContent2.exists());
+}
+
+@Test
+public void testPurgeUnpackedNars(@TempDir(cleanup = ALWAYS) File tempDir) 
throws IOException {
+File 

[nifi] branch support/nifi-1.x updated (4d00f8e156 -> 19153a7609)

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a change to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


from 4d00f8e156 NIFI-12228: This closes #7882. Fixed issue with FlowFile 
Concucrrency that can occasionally bring in more data than it should.
 new 387c22b22c NIFI-12122 Fixed persistence of Parameter Context 
descriptions
 new 19153a7609 NIFI-12160 Kafka Connect: Check for NAR unpacking before 
starting

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../kafka/connect/WorkingDirectoryUtilsTest.java   | 222 +
 .../kafka/connect/StatelessKafkaConnectorUtil.java |  10 +-
 .../nifi/kafka/connect/WorkingDirectoryUtils.java  | 100 ++
 .../nifi/controller/flow/AbstractFlowManager.java  |   5 +-
 .../StandardVersionedComponentSynchronizer.java|   6 +-
 ...StandardVersionedComponentSynchronizerTest.java |  10 +-
 .../apache/nifi/controller/flow/FlowManager.java   |   5 +-
 .../serialization/VersionedFlowSynchronizer.java   |   4 +-
 .../apache/nifi/controller/TestFlowController.java |  30 ++-
 .../conf/parameter-context-flow-description.json   |  60 ++
 .../web/dao/impl/StandardParameterContextDAO.java  |   2 +-
 11 files changed, 436 insertions(+), 18 deletions(-)
 create mode 100644 
nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
 create mode 100644 
nifi-external/nifi-kafka-connect/nifi-kafka-connector/src/main/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtils.java
 create mode 100644 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/resources/conf/parameter-context-flow-description.json



[nifi] 01/02: NIFI-12122 Fixed persistence of Parameter Context descriptions

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 387c22b22c8583082d15acd64868c0e3bd1454e3
Author: Zackeus Bengtsson 
AuthorDate: Mon Sep 25 14:24:10 2023 +0200

NIFI-12122 Fixed persistence of Parameter Context descriptions

Fixed bug where parameter context descriptions were not loaded on NiFi 
startup and overwritten as empty

This closes: #7787

Signed-off-by: David Handermann 
(cherry picked from commit 0a47157640c1502a0379a7f66d764d2d7d344872)
---
 .../nifi/controller/flow/AbstractFlowManager.java  |  5 +-
 .../StandardVersionedComponentSynchronizer.java|  6 ++-
 ...StandardVersionedComponentSynchronizerTest.java | 10 ++--
 .../apache/nifi/controller/flow/FlowManager.java   |  5 +-
 .../serialization/VersionedFlowSynchronizer.java   |  4 +-
 .../apache/nifi/controller/TestFlowController.java | 30 +--
 .../conf/parameter-context-flow-description.json   | 60 ++
 .../web/dao/impl/StandardParameterContextDAO.java  |  2 +-
 8 files changed, 107 insertions(+), 15 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
index 3b0d7681ea..e21b6621b5 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
@@ -507,8 +507,8 @@ public abstract class AbstractFlowManager implements 
FlowManager {
 }
 
 @Override
-public ParameterContext createParameterContext(final String id, final 
String name, final Map parameters,
-   final List 
inheritedContextIds,
+public ParameterContext createParameterContext(final String id, final 
String name, final String description,
+   final Map parameters, final List inheritedContextIds,
final 
ParameterProviderConfiguration parameterProviderConfiguration) {
 final boolean namingConflict = 
parameterContextManager.getParameterContexts().stream()
 .anyMatch(paramContext -> paramContext.getName().equals(name));
@@ -527,6 +527,7 @@ public abstract class AbstractFlowManager implements 
FlowManager {
 .parameterProviderConfiguration(parameterProviderConfiguration)
 .build();
 parameterContext.setParameters(parameters);
+parameterContext.setDescription(description);
 
 if (inheritedContextIds != null && !inheritedContextIds.isEmpty()) {
 if (!withParameterContextResolution.get()) {
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
index 4993a415d4..6abc253506 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
@@ -2084,7 +2084,8 @@ public class StandardVersionedComponentSynchronizer 
implements VersionedComponen
 parameters.put(versionedParameter.getName(), parameter);
 }
 
-return 
context.getFlowManager().createParameterContext(parameterContextId, 
versionedParameterContext.getName(), parameters, Collections.emptyList(), null);
+return 
context.getFlowManager().createParameterContext(parameterContextId, 
versionedParameterContext.getName(), versionedParameterContext.getDescription(),
+   parameters, 
Collections.emptyList(), null);
 }
 
 private ParameterProviderConfiguration 
getParameterProviderConfiguration(final VersionedParameterContext context) {
@@ -2107,7 +2108,8 @@ public class StandardVersionedComponentSynchronizer 
implements VersionedComponen
 
 final AtomicReference contextReference = new 
AtomicReference<>();
 context.getFlowManager().withParameterContextResolution(() -> {
-final ParameterContext created = 

[nifi] 01/02: NIFI-12122 Fixed persistence of Parameter Context descriptions

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 0a47157640c1502a0379a7f66d764d2d7d344872
Author: Zackeus Bengtsson 
AuthorDate: Mon Sep 25 14:24:10 2023 +0200

NIFI-12122 Fixed persistence of Parameter Context descriptions

Fixed bug where parameter context descriptions were not loaded on NiFi 
startup and overwritten as empty

This closes: #7787

Signed-off-by: David Handermann 
---
 .../nifi/controller/flow/AbstractFlowManager.java  |  5 +-
 .../StandardVersionedComponentSynchronizer.java|  6 ++-
 ...StandardVersionedComponentSynchronizerTest.java | 10 ++--
 .../apache/nifi/controller/flow/FlowManager.java   |  5 +-
 .../serialization/VersionedFlowSynchronizer.java   |  4 +-
 .../apache/nifi/controller/TestFlowController.java | 30 +--
 .../conf/parameter-context-flow-description.json   | 60 ++
 .../web/dao/impl/StandardParameterContextDAO.java  |  2 +-
 8 files changed, 107 insertions(+), 15 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
index 4a8a714398..176a0d01cf 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/flow/AbstractFlowManager.java
@@ -594,8 +594,8 @@ public abstract class AbstractFlowManager implements 
FlowManager {
 }
 
 @Override
-public ParameterContext createParameterContext(final String id, final 
String name, final Map parameters,
-   final List 
inheritedContextIds,
+public ParameterContext createParameterContext(final String id, final 
String name, final String description,
+   final Map parameters, final List inheritedContextIds,
final 
ParameterProviderConfiguration parameterProviderConfiguration) {
 final boolean namingConflict = 
parameterContextManager.getParameterContexts().stream()
 .anyMatch(paramContext -> paramContext.getName().equals(name));
@@ -614,6 +614,7 @@ public abstract class AbstractFlowManager implements 
FlowManager {
 .parameterProviderConfiguration(parameterProviderConfiguration)
 .build();
 parameterContext.setParameters(parameters);
+parameterContext.setDescription(description);
 
 if (inheritedContextIds != null && !inheritedContextIds.isEmpty()) {
 if (!withParameterContextResolution.get()) {
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
index df837ac17e..3a2a5f76fc 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
@@ -1990,7 +1990,8 @@ public class StandardVersionedComponentSynchronizer 
implements VersionedComponen
 parameters.put(versionedParameter.getName(), parameter);
 }
 
-return 
context.getFlowManager().createParameterContext(parameterContextId, 
versionedParameterContext.getName(), parameters, Collections.emptyList(), null);
+return 
context.getFlowManager().createParameterContext(parameterContextId, 
versionedParameterContext.getName(), versionedParameterContext.getDescription(),
+   parameters, 
Collections.emptyList(), null);
 }
 
 private ParameterProviderConfiguration 
getParameterProviderConfiguration(final VersionedParameterContext context) {
@@ -2013,7 +2014,8 @@ public class StandardVersionedComponentSynchronizer 
implements VersionedComponen
 
 final AtomicReference contextReference = new 
AtomicReference<>();
 context.getFlowManager().withParameterContextResolution(() -> {
-final ParameterContext created = 
context.getFlowManager().createParameterContext(parameterContextId, 
versionedParameterContext.getName(), 

[nifi] branch main updated (3ae0eedee6 -> b2e3898e17)

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


from 3ae0eedee6 NIFI-12124: This closes #7791. Added a new 
RenameRecordField processor. In testing, also noticed that the Descendant 
Wildcard operator (//*) and Descendant Field Path Operator (//name, for 
instance) did not properly account for array of records or map elements, so 
addressed those concerns.
 new 0a47157640 NIFI-12122 Fixed persistence of Parameter Context 
descriptions
 new b2e3898e17 NIFI-12160 Kafka Connect: Check for NAR unpacking before 
starting

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../kafka/connect/WorkingDirectoryUtilsTest.java   | 222 +
 .../kafka/connect/StatelessKafkaConnectorUtil.java |  10 +-
 .../nifi/kafka/connect/WorkingDirectoryUtils.java  | 100 ++
 .../nifi/controller/flow/AbstractFlowManager.java  |   5 +-
 .../StandardVersionedComponentSynchronizer.java|   6 +-
 ...StandardVersionedComponentSynchronizerTest.java |  10 +-
 .../apache/nifi/controller/flow/FlowManager.java   |   5 +-
 .../serialization/VersionedFlowSynchronizer.java   |   4 +-
 .../apache/nifi/controller/TestFlowController.java |  30 ++-
 .../conf/parameter-context-flow-description.json   |  60 ++
 .../web/dao/impl/StandardParameterContextDAO.java  |   2 +-
 11 files changed, 436 insertions(+), 18 deletions(-)
 create mode 100644 
nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
 create mode 100644 
nifi-external/nifi-kafka-connect/nifi-kafka-connector/src/main/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtils.java
 create mode 100644 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/resources/conf/parameter-context-flow-description.json



[nifi] 02/02: NIFI-12160 Kafka Connect: Check for NAR unpacking before starting

2023-10-13 Thread exceptionfactory
This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit b2e3898e171b89e25b5e06f6ee849bb3edabbf9a
Author: Peter Gyori 
AuthorDate: Tue Oct 3 14:42:29 2023 +0200

NIFI-12160 Kafka Connect: Check for NAR unpacking before starting

Check that required NAR files are unpacked completely before starting the 
Kafka Connector

This closes #7832

Signed-off-by: David Handermann 
---
 .../kafka/connect/WorkingDirectoryUtilsTest.java   | 222 +
 .../kafka/connect/StatelessKafkaConnectorUtil.java |  10 +-
 .../nifi/kafka/connect/WorkingDirectoryUtils.java  | 100 ++
 3 files changed, 329 insertions(+), 3 deletions(-)

diff --git 
a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
 
b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
new file mode 100644
index 00..e98fcaabb4
--- /dev/null
+++ 
b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-tests/src/test/java/org/apache/nifi/kafka/connect/WorkingDirectoryUtilsTest.java
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.kafka.connect;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.io.CleanupMode.ALWAYS;
+
+public class WorkingDirectoryUtilsTest {
+
+@Test
+public void testDeleteNonexistentFile(@TempDir(cleanup = ALWAYS) File 
tempDir) {
+File nonexistentFile = new File(tempDir, "testFile");
+
+WorkingDirectoryUtils.purgeDirectory(nonexistentFile);
+
+assertFalse(nonexistentFile.exists());
+}
+
+@Test
+public void testDeleteFlatFile(@TempDir(cleanup = ALWAYS) File tempDir) 
throws IOException {
+File file = new File(tempDir, "testFile");
+file.createNewFile();
+
+WorkingDirectoryUtils.purgeDirectory(file);
+
+assertFalse(file.exists());
+}
+
+@Test
+public void testDeleteDirectoryWithContents(@TempDir(cleanup = ALWAYS) 
File tempDir) throws IOException {
+File directory = new File(tempDir, "directory");
+File subDirectory = new File(directory, "subDirectory");
+File subDirectoryContent = new File(subDirectory, 
"subDirectoryContent");
+File directoryContent = new File(directory, "directoryContent");
+
+directory.mkdir();
+subDirectory.mkdir();
+subDirectoryContent.createNewFile();
+directoryContent.createNewFile();
+
+WorkingDirectoryUtils.purgeDirectory(directory);
+
+assertFalse(directory.exists());
+}
+
+@Test
+public void testPurgeUnpackedNarsEmptyRootDirectory(@TempDir(cleanup = 
ALWAYS) File tempDir) {
+File rootDirectory = new File(tempDir, "rootDirectory");
+
+rootDirectory.mkdir();
+
+WorkingDirectoryUtils.purgeIncompleteUnpackedNars(rootDirectory);
+
+assertTrue(rootDirectory.exists());
+}
+
+@Test
+public void 
testPurgeUnpackedNarsRootDirectoryWithFilesOnly(@TempDir(cleanup = ALWAYS) File 
tempDir) throws IOException {
+File rootDirectory = new File(tempDir, "rootDirectory");
+File directoryContent1 = new File(rootDirectory, "file1");
+File directoryContent2 = new File(rootDirectory, "file2");
+
+rootDirectory.mkdir();
+directoryContent1.createNewFile();
+directoryContent2.createNewFile();
+
+WorkingDirectoryUtils.purgeIncompleteUnpackedNars(rootDirectory);
+
+assertTrue(rootDirectory.exists() && directoryContent1.exists() && 
directoryContent2.exists());
+}
+
+@Test
+public void testPurgeUnpackedNars(@TempDir(cleanup = ALWAYS) File tempDir) 
throws IOException {
+File rootDirectory = new File(tempDir, "rootDirectory");
+rootDirectory.mkdir();
+ 

[nifi] branch main updated: NIFI-12124: This closes #7791. Added a new RenameRecordField processor. In testing, also noticed that the Descendant Wildcard operator (//*) and Descendant Field Path Opera

2023-10-13 Thread joewitt
This is an automated email from the ASF dual-hosted git repository.

joewitt 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 3ae0eedee6 NIFI-12124: This closes #7791. Added a new 
RenameRecordField processor. In testing, also noticed that the Descendant 
Wildcard operator (//*) and Descendant Field Path Operator (//name, for 
instance) did not properly account for array of records or map elements, so 
addressed those concerns.
3ae0eedee6 is described below

commit 3ae0eedee6ae67c48dd59f68752fa728e4355c41
Author: Mark Payne 
AuthorDate: Mon Sep 25 13:19:30 2023 -0400

NIFI-12124: This closes #7791. Added a new RenameRecordField processor. In 
testing, also noticed that the Descendant Wildcard operator (//*) and 
Descendant Field Path Operator (//name, for instance) did not properly account 
for array of records or map elements, so addressed those concerns.

Signed-off-by: Joseph Witt 
---
 .github/workflows/ci-workflow.yml  |   3 +
 .../record/path/paths/DescendantFieldPath.java |  26 ++-
 .../record/path/paths/WildcardDescendantPath.java  |  26 ++-
 .../org/apache/nifi/record/path/util/Filters.java  |  38 +++-
 .../apache/nifi/record/path/TestRecordPath.java|  76 ++--
 .../nifi/serialization/SimpleRecordSchema.java |  70 +--
 .../nifi/serialization/record/MapRecord.java   |  28 +++
 .../apache/nifi/serialization/record/Record.java   |  14 +-
 .../nifi/serialization/record/RecordSchema.java|  10 +
 .../org/apache/nifi/accumulo/data/KeySchema.java   |  14 +-
 .../processors/standard/RenameRecordField.java | 209 +
 .../services/org.apache.nifi.processor.Processor   |   1 +
 .../processors/standard/TestRenameRecordField.java | 182 ++
 .../input/complex-person.json  |  12 ++
 .../TestRenameRecordField/input/simple-person.json |   5 +
 .../output/testNestedPath.json |  12 ++
 .../testRecursivelyReferencingAllFields.json   |  12 ++
 .../testRecursivelyReferencingFieldName.json   |  12 ++
 .../output/testReferencingFieldName.json   |   5 +
 .../output/testRenameArray.json|  12 ++
 .../output/testRenameFieldStaticValue.json |   5 +
 .../output/testRenameFieldUsingAttribute.json  |   5 +
 .../output/testRenameMultipleFields.json   |   5 +
 23 files changed, 740 insertions(+), 42 deletions(-)

diff --git a/.github/workflows/ci-workflow.yml 
b/.github/workflows/ci-workflow.yml
index 3f9ee8a7f5..439fdff8b6 100644
--- a/.github/workflows/ci-workflow.yml
+++ b/.github/workflows/ci-workflow.yml
@@ -172,6 +172,7 @@ jobs:
 if: failure()
   - name: Post Disk Usage
 run: df
+if: ${{ always() }}
 
   macos-build-jp:
 timeout-minutes: 150
@@ -235,6 +236,7 @@ jobs:
 if: failure()
   - name: Post Disk Usage
 run: df
+if: ${{ always() }}
 
   windows-build:
 timeout-minutes: 150
@@ -300,3 +302,4 @@ jobs:
 if: failure()
   - name: Post Disk Usage
 run: df
+if: ${{ always() }}
diff --git 
a/nifi-commons/nifi-record-path/src/main/java/org/apache/nifi/record/path/paths/DescendantFieldPath.java
 
b/nifi-commons/nifi-record-path/src/main/java/org/apache/nifi/record/path/paths/DescendantFieldPath.java
index 8946bc102c..60852f16ac 100644
--- 
a/nifi-commons/nifi-record-path/src/main/java/org/apache/nifi/record/path/paths/DescendantFieldPath.java
+++ 
b/nifi-commons/nifi-record-path/src/main/java/org/apache/nifi/record/path/paths/DescendantFieldPath.java
@@ -20,14 +20,18 @@ package org.apache.nifi.record.path.paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Stream;
-
 import org.apache.nifi.record.path.FieldValue;
+import org.apache.nifi.record.path.MapEntryFieldValue;
 import org.apache.nifi.record.path.RecordPathEvaluationContext;
 import org.apache.nifi.record.path.StandardFieldValue;
 import org.apache.nifi.record.path.util.Filters;
+import org.apache.nifi.serialization.record.DataType;
 import org.apache.nifi.serialization.record.Record;
 import org.apache.nifi.serialization.record.RecordField;
+import org.apache.nifi.serialization.record.RecordFieldType;
+import org.apache.nifi.serialization.record.type.MapDataType;
 
 public class DescendantFieldPath extends RecordPathSegment {
 private final String descendantName;
@@ -74,6 +78,26 @@ public class DescendantFieldPath extends RecordPathSegment {
 if (Filters.isRecord(childField.getDataType(), recordValue)) {
 final FieldValue childFieldValue = new 
StandardFieldValue(recordValue, childField, fieldValue);
 matchingValues.addAll(findDescendants(childFieldValue));
+} else if (Filters.isRecordArray(childField.getDataType(), 
recordValue)) {
+  

[nifi] branch main updated: NIFI-12221: This closes #7876. Be more lenient about which Disconnection Codes we allow a node to be reconnected to a cluster vs. when we notify the node to disconnect agai

2023-10-13 Thread joewitt
This is an automated email from the ASF dual-hosted git repository.

joewitt 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 f4ae292a45 NIFI-12221: This closes #7876. Be more lenient about which 
Disconnection Codes we allow a node to be reconnected to a cluster vs. when we 
notify the node to disconnect again. Also updated the timeout for OffloadIT 
because it occasionally times ou out while running properly.
f4ae292a45 is described below

commit f4ae292a457638d3226fb0491e5186fa52ae8518
Author: Mark Payne 
AuthorDate: Thu Oct 12 16:43:21 2023 -0400

NIFI-12221: This closes #7876. Be more lenient about which Disconnection 
Codes we allow a node to be reconnected to a cluster vs. when we notify the 
node to disconnect again. Also updated the timeout for OffloadIT because it 
occasionally times ou out while running properly.

Signed-off-by: Joseph Witt 
---
 .../coordination/heartbeat/AbstractHeartbeatMonitor.java | 12 +++-
 .../org/apache/nifi/tests/system/clustering/OffloadIT.java   |  5 +
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/heartbeat/AbstractHeartbeatMonitor.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/heartbeat/AbstractHeartbeatMonitor.java
index c8a77ed2f0..549b030804 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/heartbeat/AbstractHeartbeatMonitor.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/heartbeat/AbstractHeartbeatMonitor.java
@@ -254,20 +254,22 @@ public abstract class AbstractHeartbeatMonitor implements 
HeartbeatMonitor {
 case LACK_OF_HEARTBEAT:
 case UNABLE_TO_COMMUNICATE:
 case NOT_YET_CONNECTED:
-case STARTUP_FAILURE: {
+case MISMATCHED_FLOWS:
+case MISSING_BUNDLE:
+case NODE_SHUTDOWN:
+case FAILED_TO_SERVICE_REQUEST:
+case STARTUP_FAILURE:
 clusterCoordinator.reportEvent(nodeId, Severity.INFO, 
"Received heartbeat from node previously "
 + "disconnected due to " + disconnectionCode + ". 
Issuing reconnection request.");
 
 clusterCoordinator.requestNodeConnect(nodeId, null);
 break;
-}
-default: {
+default:
 // disconnected nodes should not heartbeat, so we need to 
issue a disconnection request.
-logger.info("Ignoring received heartbeat from disconnected 
node " + nodeId + ".  Issuing disconnection request.");
+logger.info("Ignoring received heartbeat from disconnected 
node {}. Node was disconnected due to [{}]. Issuing disconnection request.", 
nodeId, disconnectionCode);
 clusterCoordinator.requestNodeDisconnect(nodeId, 
disconnectionCode, connectionStatus.getReason());
 removeHeartbeat(nodeId);
 break;
-}
 }
 
 return;
diff --git 
a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/clustering/OffloadIT.java
 
b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/clustering/OffloadIT.java
index 818bd0cb23..f2e2266d9d 100644
--- 
a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/clustering/OffloadIT.java
+++ 
b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/clustering/OffloadIT.java
@@ -25,11 +25,13 @@ import org.apache.nifi.web.api.dto.ProcessorConfigDTO;
 import org.apache.nifi.web.api.entity.ConnectionEntity;
 import org.apache.nifi.web.api.entity.ProcessorEntity;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.Collections;
+import java.util.concurrent.TimeUnit;
 
 public class OffloadIT extends NiFiSystemIT {
 private static final Logger logger = 
LoggerFactory.getLogger(OffloadIT.class);
@@ -40,6 +42,9 @@ public class OffloadIT extends NiFiSystemIT {
 }
 
 @Test
+@Timeout(value = 10, unit = TimeUnit.MINUTES)
+// Test to ensure that node can be offloaded, reconnected, offloaded 
several times. This test typically takes only about 1-2 minutes
+// but can occasionally take 5-6 minutes on Github Actions so we set the 
timeout to 10 minutes to allow for these occasions
 public void 

[nifi] branch support/nifi-1.x updated: NIFI-12228: This closes #7882. Fixed issue with FlowFile Concucrrency that can occasionally bring in more data than it should.

2023-10-13 Thread joewitt
This is an automated email from the ASF dual-hosted git repository.

joewitt pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
 new 4d00f8e156 NIFI-12228: This closes #7882. Fixed issue with FlowFile 
Concucrrency that can occasionally bring in more data than it should.
4d00f8e156 is described below

commit 4d00f8e1563ffec40d8d601ac2b678ad0414bb5b
Author: Mark Payne 
AuthorDate: Fri Oct 13 11:03:11 2023 -0400

NIFI-12228: This closes #7882. Fixed issue with FlowFile Concucrrency that 
can occasionally bring in more data than it should.

Signed-off-by: Joseph Witt 
---
 .../nifi/groups/SingleConcurrencyFlowFileGate.java | 17 ++
 .../org/apache/nifi/groups/StandardDataValve.java  | 27 ++
 2 files changed, 34 insertions(+), 10 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
index 2282636b57..c006cdb659 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
@@ -36,6 +36,16 @@ public class SingleConcurrencyFlowFileGate implements 
FlowFileGate {
 return false;
 }
 
+// We need to try to open flow into the Port's group. To do this, we 
need to get the data valve for the parent group,
+// as it is responsible for data flowing into and out of its children.
+final ProcessGroup dataValveGroup = port.getProcessGroup().getParent();
+final DataValve dataValve = dataValveGroup.getDataValve();
+final boolean openFlowIntoGroup = 
dataValve.tryOpenFlowIntoGroup(port.getProcessGroup());
+if (!openFlowIntoGroup) {
+claimed.set(false);
+return false;
+}
+
 // The claim is now held by this thread. Check if the ProcessGroup is 
empty.
 final boolean empty = !port.getProcessGroup().isDataQueued();
 if (empty) {
@@ -43,6 +53,9 @@ public class SingleConcurrencyFlowFileGate implements 
FlowFileGate {
 return true;
 }
 
+// We have already opened flow into group, so now we must close it, 
since we are not allowing flow in
+dataValve.closeFlowIntoGroup(port.getProcessGroup());
+
 // Process Group was not empty, so we cannot allow any more FlowFiles 
through. Reset claimed to false and return false,
 // indicating that the caller did not obtain the claim.
 claimed.set(false);
@@ -52,5 +65,9 @@ public class SingleConcurrencyFlowFileGate implements 
FlowFileGate {
 @Override
 public void releaseClaim(final Port port) {
 claimed.set(false);
+
+final ProcessGroup dataValveGroup = port.getProcessGroup().getParent();
+final DataValve dataValve = dataValveGroup.getDataValve();
+dataValve.closeFlowIntoGroup(port.getProcessGroup());
 }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/StandardDataValve.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/StandardDataValve.java
index df5658638f..5c1c1ee5ec 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/StandardDataValve.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/StandardDataValve.java
@@ -84,10 +84,15 @@ public class StandardDataValve implements DataValve {
 if (destinationGroup.isDataQueued()) {
 // If the destination group already has data queued up, and the 
valve is not already open, do not allow data to
 // flow into the group. If we did, we would end up mixing together 
two different batches of data.
-logger.debug("Will not allow data to flow into {} because valve is 
not already open and the Process Group has data queued", destinationGroup);
+logger.trace("Will not allow data to flow into {} because valve is 
not already open and the Process Group has data queued", destinationGroup);
 return "Process Group already has data queued and valve is not 
already allowing data into group";
 }
 
+if (destinationGroup.getFlowFileOutboundPolicy() == 
FlowFileOutboundPolicy.BATCH_OUTPUT && 

[nifi] branch main updated: NIFI-12228: This closes #7881. Fixed issue with FlowFile Concucrrency that can occasionally bring in more data than it should. Code cleanup, fixing logback to avoid INFO-le

2023-10-13 Thread joewitt
This is an automated email from the ASF dual-hosted git repository.

joewitt 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 0eabbcdf19 NIFI-12228: This closes #7881. Fixed issue with FlowFile 
Concucrrency that can occasionally bring in more data than it should. Code 
cleanup, fixing logback to avoid INFO-level stack trace from xodus
0eabbcdf19 is described below

commit 0eabbcdf19dfa9de7085b4b173ac3d3260f9d3a4
Author: Mark Payne 
AuthorDate: Fri Oct 13 11:03:11 2023 -0400

NIFI-12228: This closes #7881. Fixed issue with FlowFile Concucrrency that 
can occasionally bring in more data than it should.
Code cleanup, fixing logback to avoid INFO-level stack trace from xodus

Signed-off-by: Joseph Witt 
---
 .../org/apache/nifi/connectable/LocalPort.java | 12 +++---
 .../nifi/groups/SingleConcurrencyFlowFileGate.java | 17 ++
 .../org/apache/nifi/groups/StandardDataValve.java  | 27 ++
 .../resources/conf/clustered/node1/logback.xml |  3 +++
 .../resources/conf/clustered/node2/logback.xml |  3 +++
 .../src/test/resources/conf/default/logback.xml|  4 +++-
 .../src/test/resources/conf/pythonic/logback.xml   |  3 +++
 7 files changed, 49 insertions(+), 20 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/connectable/LocalPort.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/connectable/LocalPort.java
index 86366f6eb8..53ffc01937 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/connectable/LocalPort.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/connectable/LocalPort.java
@@ -186,15 +186,9 @@ public class LocalPort extends AbstractPort {
 
 final FlowFileConcurrency flowFileConcurrency = 
getProcessGroup().getFlowFileConcurrency();
 switch (flowFileConcurrency) {
-case UNBOUNDED:
-transferUnboundedConcurrency(context, session);
-break;
-case SINGLE_FLOWFILE_PER_NODE:
-transferSingleFlowFile(session);
-break;
-case SINGLE_BATCH_PER_NODE:
-transferInputBatch(session);
-break;
+case UNBOUNDED -> transferUnboundedConcurrency(context, 
session);
+case SINGLE_FLOWFILE_PER_NODE -> 
transferSingleFlowFile(session);
+case SINGLE_BATCH_PER_NODE -> transferInputBatch(session);
 }
 } finally {
 flowFileGate.releaseClaim(this);
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
index 2282636b57..c006cdb659 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/groups/SingleConcurrencyFlowFileGate.java
@@ -36,6 +36,16 @@ public class SingleConcurrencyFlowFileGate implements 
FlowFileGate {
 return false;
 }
 
+// We need to try to open flow into the Port's group. To do this, we 
need to get the data valve for the parent group,
+// as it is responsible for data flowing into and out of its children.
+final ProcessGroup dataValveGroup = port.getProcessGroup().getParent();
+final DataValve dataValve = dataValveGroup.getDataValve();
+final boolean openFlowIntoGroup = 
dataValve.tryOpenFlowIntoGroup(port.getProcessGroup());
+if (!openFlowIntoGroup) {
+claimed.set(false);
+return false;
+}
+
 // The claim is now held by this thread. Check if the ProcessGroup is 
empty.
 final boolean empty = !port.getProcessGroup().isDataQueued();
 if (empty) {
@@ -43,6 +53,9 @@ public class SingleConcurrencyFlowFileGate implements 
FlowFileGate {
 return true;
 }
 
+// We have already opened flow into group, so now we must close it, 
since we are not allowing flow in
+dataValve.closeFlowIntoGroup(port.getProcessGroup());
+
 // Process Group was not empty, so we cannot allow any more FlowFiles 
through. Reset claimed to false and return false,
 // indicating that the caller did not obtain the claim.
 claimed.set(false);
@@ -52,5 

[nifi] branch main updated (22ad7d542d -> 96eb1d825a)

2023-10-13 Thread markap14
This is an automated email from the ASF dual-hosted git repository.

markap14 pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


from 22ad7d542d NIFI-12206 Refactor Flow History using JetBrains Xodus 
(#7870)
 add 96eb1d825a NIFI-1 Protect against missing parameter context when 
syncing a PG in component synchronizer (#7877)

No new revisions were added by this update.

Summary of changes:
 .../StandardVersionedComponentSynchronizer.java| 41 -
 ...StandardVersionedComponentSynchronizerTest.java | 53 ++
 2 files changed, 71 insertions(+), 23 deletions(-)