This is an automated email from the ASF dual-hosted git repository.

mbathori 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 f57a96dbfb NIFI-13496 Included Hadoop configuration file paths in the 
classloader isolation key of HDFS processors
f57a96dbfb is described below

commit f57a96dbfbf739b53d1bdb6434f40e84a6528883
Author: Peter Turcsanyi <turcsa...@apache.org>
AuthorDate: Fri Jun 21 15:18:45 2024 +0200

    NIFI-13496 Included Hadoop configuration file paths in the classloader 
isolation key of HDFS processors
    
    Signed-off-by: Mark Bathori <mbath...@apache.org>
    
    This closes #9038
---
 .../processors/hadoop/AbstractHadoopProcessor.java | 34 ++++++++++++++++++----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
 
b/nifi-extension-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
index 431bb9938a..28f1617fdb 100644
--- 
a/nifi-extension-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
+++ 
b/nifi-extension-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
@@ -212,9 +212,33 @@ public abstract class AbstractHadoopProcessor extends 
AbstractProcessor implemen
 
     @Override
     public String getClassloaderIsolationKey(final PropertyContext context) {
+        class ClassloaderIsolationKeyBuilder {
+            private static final String SEPARATOR = "__";
+
+            private final StringBuilder sb = new StringBuilder();
+
+            void add(final String value) {
+                if (value != null) {
+                    if (sb.length() > 0) {
+                        sb.append(SEPARATOR);
+                    }
+                    sb.append(value);
+                }
+            }
+
+            String build() {
+                return sb.length() > 0 ? sb.toString() : null;
+            }
+        }
+
+        final ClassloaderIsolationKeyBuilder builder = new 
ClassloaderIsolationKeyBuilder();
+
+        
builder.add(context.getProperty(HADOOP_CONFIGURATION_RESOURCES).getValue());
+        
builder.add(context.getProperty(ADDITIONAL_CLASSPATH_RESOURCES).getValue());
+
         final String explicitKerberosPrincipal = 
context.getProperty(kerberosProperties.getKerberosPrincipal()).evaluateAttributeExpressions().getValue();
         if (explicitKerberosPrincipal != null) {
-            return explicitKerberosPrincipal;
+            builder.add(explicitKerberosPrincipal);
         }
 
         try {
@@ -222,20 +246,20 @@ public abstract class AbstractHadoopProcessor extends 
AbstractProcessor implemen
             if (credentialsService != null) {
                 final String credentialsServicePrincipal = 
credentialsService.getPrincipal();
                 if (credentialsServicePrincipal != null) {
-                    return credentialsServicePrincipal;
+                    builder.add(credentialsServicePrincipal);
                 }
             }
 
             final KerberosUserService kerberosUserService = 
context.getProperty(KERBEROS_USER_SERVICE).asControllerService(KerberosUserService.class);
             if (kerberosUserService != null) {
                 final KerberosUser kerberosUser = 
kerberosUserService.createKerberosUser();
-                return kerberosUser.getPrincipal();
+                builder.add(kerberosUser.getPrincipal());
             }
         } catch (IllegalStateException e) {
-            return null;
+            // the Kerberos controller service is disabled, therefore this 
part of the isolation key cannot be determined yet
         }
 
-        return null;
+        return builder.build();
     }
 
     @Override

Reply via email to