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")) {

Reply via email to