Details
-
Bug
-
Status: Patch Available
-
Minor
-
Resolution: Unresolved
-
3.0.0-alpha1
-
None
-
None
Description
The current implementation of ClassName.java in rumen does not follow the practice of trimming configuration values. This leads to silent and hard-to-diagnosis errors if users set values containing space or newline---basically classes supposed to need anonymization will not do.
See the previous commits as reference (just list a few):
HADOOP-6578. Configuration should trim whitespace around a lot of value types
HADOOP-6534. Trim whitespace from directory lists initializing
Patch is available against trunk
HDFS-9708. FSNamesystem.initAuditLoggers() doesn't trim classnames
HDFS-2799. Trim fs.checkpoint.dir values.
YARN-3395. FairScheduler: Trim whitespaces when using username for queuename.
YARN-2869. CapacityScheduler should trim sub queue names when parse configuration.
Patch is available against trunk (tested):
@@ -43,15 +43,13 @@ protected String getPrefix() { @Override protected boolean needsAnonymization(Configuration conf) { - String[] preserves = conf.getStrings(CLASSNAME_PRESERVE_CONFIG); - if (preserves != null) { - // do a simple starts with check - for (String p : preserves) { - if (className.startsWith(p)) { - return false; - } + String[] preserves = conf.getTrimmedStrings(CLASSNAME_PRESERVE_CONFIG); + // do a simple starts with check + for (String p : preserves) { + if (className.startsWith(p)) { + return false; } } return true; }
(the NULL check is no longer needed because getTrimmedStrings returns an empty array if nothing is set)