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