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 d744ccb671 NIFI-15364 Fixed QUIC NoClassDefFoundError for Azure 
Parameter Provider (#10663)
d744ccb671 is described below

commit d744ccb671e40c0a73a77b2af5f6e5934c5ace41
Author: Pierre Villard <[email protected]>
AuthorDate: Thu Dec 18 22:50:15 2025 +0100

    NIFI-15364 Fixed QUIC NoClassDefFoundError for Azure Parameter Provider 
(#10663)
    
    Signed-off-by: David Handermann <[email protected]>
---
 nifi-code-coverage/pom.xml                                   | 12 +++++++++++-
 .../nifi-azure-bundle/nifi-azure-parameter-providers/pom.xml |  4 ++++
 .../azure/AzureKeyVaultSecretsParameterProvider.java         |  4 ++++
 .../nifi-azure-bundle/nifi-azure-processors/pom.xml          |  4 ++++
 .../azure/StandardAzureCredentialsControllerService.java     | 12 +++++++++++-
 .../nifi-azure-bundle/nifi-azure-services-api/pom.xml        |  4 ++++
 nifi-extension-bundles/nifi-azure-bundle/pom.xml             | 12 +++++++++++-
 7 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/nifi-code-coverage/pom.xml b/nifi-code-coverage/pom.xml
index 7383583286..59df818e06 100644
--- a/nifi-code-coverage/pom.xml
+++ b/nifi-code-coverage/pom.xml
@@ -93,7 +93,7 @@
                     <!--
                         Reactor Netty 1.3 includes HTTP/3 support requiring 
native QUIC libraries.
                         Exclude netty-codec-http3 to prevent HTTP/3 
initialization.
-                        Keep netty-codec-classes-quic so 
Http3.isHttp3Available() can run and
+                        Explicitly add netty-codec-classes-quic below so 
Http3.isHttp3Available() can run and
                         properly detect that native QUIC support is 
unavailable.
                     -->
                     <exclusion>
@@ -102,6 +102,16 @@
                     </exclusion>
                 </exclusions>
             </dependency>
+            <!--
+                Required for reactor-netty-http Http3.isHttp3Available() to 
detect
+                that native QUIC support is unavailable. This is a transitive 
dependency
+                of netty-codec-http3, which is excluded above, so it must be 
added explicitly.
+            -->
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-codec-classes-quic</artifactId>
+                <version>${netty.4.version}</version>
+            </dependency>
             <!-- SSHD from Registry and other modules -->
             <dependency>
                 <groupId>org.apache.sshd</groupId>
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/pom.xml
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/pom.xml
index 0acc6820c3..fc22516d89 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/pom.xml
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/pom.xml
@@ -50,5 +50,9 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>com.azure</groupId>
+            <artifactId>azure-core-http-jdk-httpclient</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/src/main/java/org/apache/nifi/parameter/azure/AzureKeyVaultSecretsParameterProvider.java
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/src/main/java/org/apache/nifi/parameter/azure/AzureKeyVaultSecretsParameterProvider.java
index a04aeb3a32..2132966c6f 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/src/main/java/org/apache/nifi/parameter/azure/AzureKeyVaultSecretsParameterProvider.java
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-parameter-providers/src/main/java/org/apache/nifi/parameter/azure/AzureKeyVaultSecretsParameterProvider.java
@@ -16,6 +16,8 @@
  */
 package org.apache.nifi.parameter.azure;
 
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.jdk.httpclient.JdkHttpClientBuilder;
 import com.azure.security.keyvault.secrets.SecretClient;
 import com.azure.security.keyvault.secrets.SecretClientBuilder;
 import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
@@ -190,7 +192,9 @@ public class AzureKeyVaultSecretsParameterProvider extends 
AbstractParameterProv
         final AzureCredentialsService credentialsService =
                 
context.getProperty(AZURE_CREDENTIALS_SERVICE).asControllerService(AzureCredentialsService.class);
         final String vaultUrl = context.getProperty(KEY_VAULT_URI).getValue();
+        final HttpClient httpClient = new JdkHttpClientBuilder().build();
         return new SecretClientBuilder()
+                .httpClient(httpClient)
                 .credential(credentialsService.getCredentials())
                 .vaultUrl(vaultUrl)
                 .buildClient();
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
index a625199fed..b03b6b7756 100644
--- a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
+++ b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
@@ -116,6 +116,10 @@
             <groupId>com.azure</groupId>
             <artifactId>azure-core-http-netty</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-codec-classes-quic</artifactId>
+        </dependency>
         <dependency>
             <groupId>io.projectreactor</groupId>
             <artifactId>reactor-core</artifactId>
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/services/azure/StandardAzureCredentialsControllerService.java
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/services/azure/StandardAzureCredentialsControllerService.java
index c0ecf745fa..fb648155c9 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/services/azure/StandardAzureCredentialsControllerService.java
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/services/azure/StandardAzureCredentialsControllerService.java
@@ -17,6 +17,8 @@
 package org.apache.nifi.services.azure;
 
 import com.azure.core.credential.TokenCredential;
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.netty.NettyAsyncHttpClientBuilder;
 import com.azure.identity.ClientSecretCredentialBuilder;
 import com.azure.identity.DefaultAzureCredentialBuilder;
 import com.azure.identity.ManagedIdentityCredentialBuilder;
@@ -144,8 +146,14 @@ public class StandardAzureCredentialsControllerService 
extends AbstractControlle
         config.renameProperty("managed-identity-client-id", 
MANAGED_IDENTITY_CLIENT_ID.getName());
     }
 
+    private HttpClient getHttpClient() {
+        return new NettyAsyncHttpClientBuilder().build();
+    }
+
     private TokenCredential getDefaultAzureCredential() {
-        return new DefaultAzureCredentialBuilder().build();
+        return new DefaultAzureCredentialBuilder()
+                .httpClient(getHttpClient())
+                .build();
     }
 
     private TokenCredential getManagedIdentityCredential(final 
ConfigurationContext context) {
@@ -153,6 +161,7 @@ public class StandardAzureCredentialsControllerService 
extends AbstractControlle
 
         return new ManagedIdentityCredentialBuilder()
                 .clientId(clientId)
+                .httpClient(getHttpClient())
                 .build();
     }
 
@@ -165,6 +174,7 @@ public class StandardAzureCredentialsControllerService 
extends AbstractControlle
                 .tenantId(tenantId)
                 .clientId(clientId)
                 .clientSecret(clientSecret)
+                .httpClient(getHttpClient())
                 .build();
     }
 
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-services-api/pom.xml 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-services-api/pom.xml
index 3515c07f04..d00265034b 100644
--- a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-services-api/pom.xml
+++ b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-services-api/pom.xml
@@ -32,6 +32,10 @@
             <groupId>com.azure</groupId>
             <artifactId>azure-cosmos</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-codec-classes-quic</artifactId>
+        </dependency>
 
         <!-- azure-core does not bring jackson-dataformat-xml dependency from 
version 1.37.0 on -->
         <!-- but some libraries in the processor nar module depend on 
jackson-dataformat-xml -->
diff --git a/nifi-extension-bundles/nifi-azure-bundle/pom.xml 
b/nifi-extension-bundles/nifi-azure-bundle/pom.xml
index cefc2b19b8..2c70a2e72a 100644
--- a/nifi-extension-bundles/nifi-azure-bundle/pom.xml
+++ b/nifi-extension-bundles/nifi-azure-bundle/pom.xml
@@ -83,7 +83,7 @@
                     <!--
                         Reactor Netty 1.3 includes HTTP/3 support requiring 
native QUIC libraries.
                         Exclude netty-codec-http3 to prevent HTTP/3 
initialization.
-                        Keep netty-codec-classes-quic so 
Http3.isHttp3Available() can run and
+                        Explicitly add netty-codec-classes-quic below so 
Http3.isHttp3Available() can run and
                         properly detect that native QUIC support is 
unavailable.
                     -->
                     <exclusion>
@@ -92,6 +92,16 @@
                     </exclusion>
                 </exclusions>
             </dependency>
+            <!--
+                Required for reactor-netty-http Http3.isHttp3Available() to 
detect
+                that native QUIC support is unavailable. This is a transitive 
dependency
+                of netty-codec-http3, which is excluded above, so it must be 
added explicitly.
+            -->
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-codec-classes-quic</artifactId>
+                <version>${netty.4.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 </project>

Reply via email to