Repository: hbase
Updated Branches:
  refs/heads/master 211c1e8ad -> 842f4808d


HBASE-11880 NPE in MasterStatusServlet


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/842f4808
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/842f4808
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/842f4808

Branch: refs/heads/master
Commit: 842f4808db3a4951f43d958f7933e12ca9bd4830
Parents: 211c1e8
Author: Jimmy Xiang <[email protected]>
Authored: Tue Sep 2 12:07:19 2014 -0700
Committer: Jimmy Xiang <[email protected]>
Committed: Tue Sep 2 14:56:11 2014 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/hadoop/hbase/master/HMaster.java    | 8 ++++++--
 .../org/apache/hadoop/hbase/master/MasterStatusServlet.java  | 7 +++----
 .../org/apache/hadoop/hbase/regionserver/HRegionServer.java  | 8 ++++++--
 3 files changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/842f4808/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 5024313..714b5a8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -480,8 +480,12 @@ public class HMaster extends HRegionServer implements 
MasterServices, Server {
     ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());
     this.serverManager = createServerManager(this, this);
 
-    metaTableLocator = new MetaTableLocator();
-    shortCircuitConnection = createShortCircuitConnection();
+    synchronized (this) {
+      if (shortCircuitConnection == null) {
+        shortCircuitConnection = createShortCircuitConnection();
+        metaTableLocator = new MetaTableLocator();
+      }
+    }
 
     // Invalidate all write locks held previously
     this.tableLockManager.reapWriteLocks();

http://git-wip-us.apache.org/repos/asf/hbase/blob/842f4808/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterStatusServlet.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterStatusServlet.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterStatusServlet.java
index 75def7b..3059096 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterStatusServlet.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterStatusServlet.java
@@ -27,8 +27,6 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ServerName;
@@ -43,7 +41,6 @@ import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
  */
 @InterfaceAudience.Private
 public class MasterStatusServlet extends HttpServlet {
-  private static final Log LOG = LogFactory.getLog(MasterStatusServlet.class);
   private static final long serialVersionUID = 1L;
 
   @Override
@@ -88,7 +85,9 @@ public class MasterStatusServlet extends HttpServlet {
   }
 
   private ServerName getMetaLocationOrNull(HMaster master) {
-    return 
master.getMetaTableLocator().getMetaRegionLocation(master.getZooKeeper());
+    MetaTableLocator metaTableLocator = master.getMetaTableLocator();
+    return metaTableLocator == null ? null :
+      metaTableLocator.getMetaRegionLocation(master.getZooKeeper());
   }
 
   private Map<String, Integer> getFragmentationInfo(

http://git-wip-us.apache.org/repos/asf/hbase/blob/842f4808/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index eab29e7..7947c4a 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -637,8 +637,12 @@ public class HRegionServer extends HasThread implements
       this.abort("Failed to retrieve Cluster ID",e);
     }
 
-    shortCircuitConnection = createShortCircuitConnection();
-    metaTableLocator = new MetaTableLocator();
+    synchronized (this) {
+      if (shortCircuitConnection == null) {
+        shortCircuitConnection = createShortCircuitConnection();
+        metaTableLocator = new MetaTableLocator();
+      }
+    }
 
     // watch for snapshots and other procedures
     try {

Reply via email to