Преглед на файлове

HADOOP-8418. Update UGI Principal classes name for running with
IBM JDK on 64 bits Windows. (Yu Gao via eyang)


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1@1418574 13f79535-47bb-0310-9956-ffa450edef68

Eric Yang преди 12 години
родител
ревизия
0e031759ad
променени са 2 файла, в които са добавени 17 реда и са изтрити 10 реда
  1. 3 0
      CHANGES.txt
  2. 14 10
      src/core/org/apache/hadoop/security/UserGroupInformation.java

+ 3 - 0
CHANGES.txt

@@ -16,6 +16,9 @@ Release 1.1.2 - 2012.12.07
 
 
   BUG FIXES
   BUG FIXES
 
 
+    HADOOP-8418. Update UGI Principal classes name for running with
+    IBM JDK on 64 bits Windows.  (Yu Gao via eyang)
+
     MAPREDUCE-4798. Updated TestJobHistoryServer test case for startup
     MAPREDUCE-4798. Updated TestJobHistoryServer test case for startup
     race conditions.  (Sam Liu via eyang)
     race conditions.  (Sam Liu via eyang)
 
 

+ 14 - 10
src/core/org/apache/hadoop/security/UserGroupInformation.java

@@ -252,16 +252,20 @@ public class UserGroupInformation {
   
   
   private static String OS_LOGIN_MODULE_NAME;
   private static String OS_LOGIN_MODULE_NAME;
   private static Class<? extends Principal> OS_PRINCIPAL_CLASS;
   private static Class<? extends Principal> OS_PRINCIPAL_CLASS;
-  private static final boolean windows = 
-                           System.getProperty("os.name").startsWith("Windows");
+  private static final boolean windows =
+      System.getProperty("os.name").startsWith("Windows");
+  private static final boolean is64Bit =
+      System.getProperty("os.arch").contains("64");
   private static Thread renewerThread = null;
   private static Thread renewerThread = null;
   private static volatile boolean shouldRunRenewerThread = true;
   private static volatile boolean shouldRunRenewerThread = true;
   
   
   /* Return the OS login module class name */
   /* Return the OS login module class name */
   private static String getOSLoginModuleName() {
   private static String getOSLoginModuleName() {
     if (System.getProperty("java.vendor").contains("IBM")) {
     if (System.getProperty("java.vendor").contains("IBM")) {
-      return windows ? "com.ibm.security.auth.module.NTLoginModule"
-       : "com.ibm.security.auth.module.LinuxLoginModule";    
+      return windows ? (is64Bit
+          ? "com.ibm.security.auth.module.Win64LoginModule"
+          : "com.ibm.security.auth.module.NTLoginModule")
+        : "com.ibm.security.auth.module.LinuxLoginModule";
     } else {
     } else {
       return windows ? "com.sun.security.auth.module.NTLoginModule"
       return windows ? "com.sun.security.auth.module.NTLoginModule"
         : "com.sun.security.auth.module.UnixLoginModule";
         : "com.sun.security.auth.module.UnixLoginModule";
@@ -275,13 +279,13 @@ public class UserGroupInformation {
     try {
     try {
       if (System.getProperty("java.vendor").contains("IBM")) {
       if (System.getProperty("java.vendor").contains("IBM")) {
         if (windows) {
         if (windows) {
-          return (Class<? extends Principal>)
-            cl.loadClass("com.ibm.security.auth.UsernamePrincipal");
+          return (Class<? extends Principal>) (is64Bit
+            ? cl.loadClass("com.ibm.security.auth.UsernamePrincipal")
+            : cl.loadClass("com.ibm.security.auth.NTUserPrincipal"));
         } else {
         } else {
-          return (Class<? extends Principal>)
-            (System.getProperty("os.arch").contains("64")
-             ? cl.loadClass("com.ibm.security.auth.UsernamePrincipal")
-             : cl.loadClass("com.ibm.security.auth.LinuxPrincipal"));
+          return (Class<? extends Principal>) (is64Bit
+            ? cl.loadClass("com.ibm.security.auth.UsernamePrincipal")
+            : cl.loadClass("com.ibm.security.auth.LinuxPrincipal"));
         }
         }
       } else {
       } else {
         return (Class<? extends Principal>) (windows
         return (Class<? extends Principal>) (windows