You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2026/04/03 19:47:26 UTC

(nifi) branch main updated: NIFI-15783 Add NodeTypeProvider to ConnectorConfigProvider (#11104)

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 <kd...@apache.org>
AuthorDate: Fri Apr 3 15:47:19 2026 -0400

    NIFI-15783 Add NodeTypeProvider to ConnectorConfigProvider (#11104)
    
    Signed-off-by: David Handermann <ex...@apache.org>
---
 .../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")) {