HADOOP-7902. skipping name rules setting (if already set) should be done on UGI initialization only. (tucu)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1212591 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Alejandro Abdelnur 2011-12-09 19:28:25 +00:00
parent 9b1f47226b
commit 66fce20802
3 changed files with 12 additions and 8 deletions

View File

@ -132,6 +132,9 @@ Trunk (unreleased changes)
HADOOP-7898. Fix javadoc warnings in AuthenticationToken.java.
(suresh)
HADOOP-7902. skipping name rules setting (if already set) should be done
on UGI initialization only. (tucu)
OPTIMIZATIONS
HADOOP-7761. Improve the performance of raw comparisons. (todd)

View File

@ -65,10 +65,8 @@ public class HadoopKerberosName extends KerberosName {
* @throws IOException
*/
public static void setConfiguration(Configuration conf) throws IOException {
if (!hasRulesBeenSet()) {
String ruleString = conf.get("hadoop.security.auth_to_local", "DEFAULT");
setRules(ruleString);
}
String ruleString = conf.get("hadoop.security.auth_to_local", "DEFAULT");
setRules(ruleString);
}
public static void main(String[] args) throws Exception {

View File

@ -57,6 +57,7 @@ import org.apache.hadoop.metrics2.annotation.Metric;
import org.apache.hadoop.metrics2.annotation.Metrics;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.metrics2.lib.MutableRate;
import org.apache.hadoop.security.authentication.util.KerberosName;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenIdentifier;
import org.apache.hadoop.util.Shell;
@ -200,7 +201,7 @@ public class UserGroupInformation {
*/
private static synchronized void ensureInitialized() {
if (!isInitialized) {
initialize(new Configuration());
initialize(new Configuration(), KerberosName.hasRulesBeenSet());
}
}
@ -208,11 +209,13 @@ public class UserGroupInformation {
* Initialize UGI and related classes.
* @param conf the configuration to use
*/
private static synchronized void initialize(Configuration conf) {
private static synchronized void initialize(Configuration conf, boolean skipRulesSetting) {
initUGI(conf);
// give the configuration on how to translate Kerberos names
try {
HadoopKerberosName.setConfiguration(conf);
if (!skipRulesSetting) {
HadoopKerberosName.setConfiguration(conf);
}
} catch (IOException ioe) {
throw new RuntimeException("Problem with Kerberos auth_to_local name " +
"configuration", ioe);
@ -249,7 +252,7 @@ public class UserGroupInformation {
* @param conf the configuration to use
*/
public static void setConfiguration(Configuration conf) {
initialize(conf);
initialize(conf, false);
}
/**