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 5cbafbc8dfe NIFI-15783 Add NodeTypeProvider to ConnectorConfigProvider
(#11104)
5cbafbc8dfe is described below
commit 5cbafbc8dfe62abd58f6c071786f7729a6e5f46c
Author: Kevin Doran <[email protected]>
AuthorDate: Fri Apr 3 15:47:19 2026 -0400
NIFI-15783 Add NodeTypeProvider to ConnectorConfigProvider (#11104)
Signed-off-by: David Handermann <[email protected]>
---
.../ConnectorConfigurationProviderInitializationContext.java | 10 ++++++++++
...dConnectorConfigurationProviderInitializationContext.java | 12 +++++++++++-
.../main/java/org/apache/nifi/controller/FlowController.java | 6 +++---
3 files changed, 24 insertions(+), 4 deletions(-)
diff --git
a/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/ConnectorConfigurationProviderInitializationContext.java
b/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/ConnectorConfigurationProviderInitializationContext.java
index bcf7dce26c4..68c0f8148b7 100644
---
a/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/ConnectorConfigurationProviderInitializationContext.java
+++
b/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/ConnectorConfigurationProviderInitializationContext.java
@@ -18,6 +18,7 @@
package org.apache.nifi.components.connector;
import org.apache.nifi.asset.AssetManager;
+import org.apache.nifi.controller.NodeTypeProvider;
import java.util.Map;
@@ -47,4 +48,13 @@ public interface
ConnectorConfigurationProviderInitializationContext {
* @return the AssetManager for connector assets
*/
AssetManager getAssetManager();
+
+ /**
+ * Returns the {@link NodeTypeProvider} for this NiFi instance.
+ * Providers can use this to determine cluster membership and primary-node
status,
+ * for example to gate external writes so that only one node persists to a
shared store.
+ *
+ * @return the NodeTypeProvider for this NiFi instance
+ */
+ NodeTypeProvider getNodeTypeProvider();
}
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorConfigurationProviderInitializationContext.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorConfigurationProviderInitializationContext.java
index 99f3bee1207..1c2dd2a3b34 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorConfigurationProviderInitializationContext.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorConfigurationProviderInitializationContext.java
@@ -18,6 +18,7 @@
package org.apache.nifi.components.connector;
import org.apache.nifi.asset.AssetManager;
+import org.apache.nifi.controller.NodeTypeProvider;
import java.util.Map;
import java.util.Objects;
@@ -26,10 +27,14 @@ public class
StandardConnectorConfigurationProviderInitializationContext impleme
private final Map<String, String> properties;
private final AssetManager assetManager;
+ private final NodeTypeProvider nodeTypeProvider;
- public StandardConnectorConfigurationProviderInitializationContext(final
Map<String, String> properties, final AssetManager assetManager) {
+ public StandardConnectorConfigurationProviderInitializationContext(final
Map<String, String> properties,
+ final
AssetManager assetManager,
+ final
NodeTypeProvider nodeTypeProvider) {
this.properties = Map.copyOf(Objects.requireNonNull(properties,
"Properties is required"));
this.assetManager = Objects.requireNonNull(assetManager, "AssetManager
is required");
+ this.nodeTypeProvider = Objects.requireNonNull(nodeTypeProvider,
"NodeTypeProvider is required");
}
@Override
@@ -41,4 +46,9 @@ public class
StandardConnectorConfigurationProviderInitializationContext impleme
public AssetManager getAssetManager() {
return assetManager;
}
+
+ @Override
+ public NodeTypeProvider getNodeTypeProvider() {
+ return nodeTypeProvider;
+ }
}
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
index 26137a6ae53..7328edec917 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
@@ -644,7 +644,7 @@ public class FlowController implements
ReportingTaskProvider, FlowAnalysisRulePr
controllerServiceProvider, new
StandardControllerServiceApiLookup(extensionManager));
final SecretsManager secretsManager =
createSecretsManager(nifiProperties, extensionManager, flowManager);
- final ConnectorConfigurationProvider connectorConfigurationProvider =
createConnectorConfigurationProvider(nifiProperties, extensionManager,
connectorAssetManager);
+ final ConnectorConfigurationProvider connectorConfigurationProvider =
createConnectorConfigurationProvider(nifiProperties, extensionManager,
connectorAssetManager, this);
connectorRepository = createConnectorRepository(nifiProperties,
extensionManager, flowManager, connectorAssetManager, secretsManager, this,
connectorRequestReplicator,
connectorConfigurationProvider);
@@ -992,7 +992,7 @@ public class FlowController implements
ReportingTaskProvider, FlowAnalysisRulePr
}
private static ConnectorConfigurationProvider
createConnectorConfigurationProvider(final NiFiProperties properties, final
ExtensionDiscoveringManager extensionManager,
- final AssetManager connectorAssetManager) {
+ final AssetManager connectorAssetManager, final
NodeTypeProvider nodeTypeProvider) {
final String implementationClassName =
properties.getProperty(NiFiProperties.CONNECTOR_CONFIGURATION_PROVIDER_IMPLEMENTATION);
if (implementationClassName == null ||
implementationClassName.isBlank()) {
LOG.info("No Connector Configuration Provider implementation
configured; external connector configuration management is disabled");
@@ -1012,7 +1012,7 @@ public class FlowController implements
ReportingTaskProvider, FlowAnalysisRulePr
));
final ConnectorConfigurationProviderInitializationContext
initializationContext =
- new
StandardConnectorConfigurationProviderInitializationContext(initializationProperties,
connectorAssetManager);
+ new
StandardConnectorConfigurationProviderInitializationContext(initializationProperties,
connectorAssetManager, nodeTypeProvider);
synchronized (created) {
try (final NarCloseable ignored =
NarCloseable.withComponentNarLoader(extensionManager, created.getClass(),
"connector-configuration-provider")) {