You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mb...@apache.org on 2024/07/05 12:19:27 UTC
(nifi) branch support/nifi-1.x updated: NIFI-13496 Included Hadoop configuration file paths in the classloader isolation key of HDFS processors
This is an automated email from the ASF dual-hosted git repository.
mbathori pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
new 994a4f2c5d NIFI-13496 Included Hadoop configuration file paths in the classloader isolation key of HDFS processors
994a4f2c5d is described below
commit 994a4f2c5d94d51cd579346e50310452d3b02c12
Author: Peter Turcsanyi <tu...@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 <mb...@apache.org>
This closes #9038
---
.../processors/hadoop/AbstractHadoopProcessor.java | 34 ++++++++++++++++++----
1 file changed, 29 insertions(+), 5 deletions(-)
diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java b/nifi-nar-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
index d2c914eefa..c76de7c881 100644
--- a/nifi-nar-bundles/nifi-extension-utils/nifi-hadoop-utils/src/main/java/org/apache/nifi/processors/hadoop/AbstractHadoopProcessor.java
+++ b/nifi-nar-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