You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jx...@apache.org on 2014/03/27 01:34:44 UTC

svn commit: r1582140 - in /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase: master/HMaster.java regionserver/HRegionServer.java regionserver/RSRpcServices.java

Author: jxiang
Date: Thu Mar 27 00:34:43 2014
New Revision: 1582140

URL: http://svn.apache.org/r1582140
Log:
HBASE-10839 NullPointerException in construction of RegionServer in Security Cluster

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1582140&r1=1582139&r2=1582140&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Thu Mar 27 00:34:43 2014
@@ -97,6 +97,7 @@ import org.apache.hadoop.hbase.regionser
 import org.apache.hadoop.hbase.regionserver.RSRpcServices;
 import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;
 import org.apache.hadoop.hbase.replication.regionserver.Replication;
+import org.apache.hadoop.hbase.security.UserProvider;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CompressionTest;
 import org.apache.hadoop.hbase.util.FSUtils;
@@ -272,6 +273,18 @@ public class HMaster extends HRegionServ
     startActiveMasterManager();
   }
 
+  /**
+   * For compatibility, if failed with regionserver credentials, try the master one
+   */
+  protected void login(UserProvider user, String host) throws IOException {
+    try {
+      super.login(user, host);
+    } catch (IOException ie) {
+      user.login("hbase.master.keytab.file",
+        "hbase.master.kerberos.principal", host);
+    }
+  }
+
   @VisibleForTesting
   public MasterRpcServices getMasterRpcServices() {
     return (MasterRpcServices)rpcServices;

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1582140&r1=1582139&r2=1582140&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Mar 27 00:34:43 2014
@@ -437,10 +437,9 @@ public class HRegionServer extends HasTh
     // login the zookeeper client principal (if using security)
     ZKUtil.loginClient(this.conf, "hbase.zookeeper.client.keytab.file",
       "hbase.zookeeper.client.kerberos.principal", hostName);
-
     // login the server principal (if using secure Hadoop)
-    userProvider.login("hbase.regionserver.keytab.file",
-      "hbase.regionserver.kerberos.principal", hostName);
+    login(userProvider, hostName);
+
     regionServerAccounting = new RegionServerAccounting();
     cacheConfig = new CacheConfig(conf);
     uncaughtExceptionHandler = new UncaughtExceptionHandler() {
@@ -484,9 +483,15 @@ public class HRegionServer extends HasTh
       catalogTracker.start();
     }
 
+    rpcServices.start();
     putUpWebUI();
   }
 
+  protected void login(UserProvider user, String host) throws IOException {
+    user.login("hbase.regionserver.keytab.file",
+      "hbase.regionserver.kerberos.principal", host);
+  }
+
   protected String getProcessName() {
     return REGIONSERVER;
   }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java?rev=1582140&r1=1582139&r2=1582140&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java Thu Mar 27 00:34:43 2014
@@ -703,7 +703,6 @@ public class RSRpcServices implements HB
       initialIsa, // BindAddress is IP we got for this server.
       rs.conf,
       rpcSchedulerFactory.create(rs.conf, this));
-    rpcServer.start();
 
     scannerLeaseTimeoutPeriod = rs.conf.getInt(
       HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
@@ -759,6 +758,10 @@ public class RSRpcServices implements HB
     return priority;
   }
 
+  void start() {
+    rpcServer.start();
+  }
+
   void stop() {
     closeAllScanners();
     rpcServer.stop();