hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zg...@apache.org
Subject hbase git commit: HBASE-21388 No need to instantiate MemStoreLAB for master which not carry table
Date Thu, 01 Nov 2018 08:26:59 GMT
Repository: hbase
Updated Branches:
  refs/heads/branch-2 0d17e4b39 -> 2d0810a00


HBASE-21388 No need to instantiate MemStoreLAB for master which not carry table


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

Branch: refs/heads/branch-2
Commit: 2d0810a00698c4158f07524dd62fdb652d2e50d1
Parents: 0d17e4b
Author: Guanghao Zhang <zghao@apache.org>
Authored: Mon Oct 29 11:50:53 2018 +0800
Committer: Guanghao Zhang <zghao@apache.org>
Committed: Thu Nov 1 16:20:49 2018 +0800

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/master/HMaster.java |  7 +-
 .../hadoop/hbase/regionserver/ChunkCreator.java |  3 +-
 .../hbase/regionserver/HRegionServer.java       |  3 +-
 .../apache/hadoop/hbase/master/TestMaster.java  |  7 --
 .../hbase/master/TestMasterNotCarryTable.java   | 90 ++++++++++++++++++++
 5 files changed, 98 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2d0810a0/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 4f56d1b..ee5dcb6 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
@@ -909,8 +909,11 @@ public class HMaster extends HRegionServer implements MasterServices
{
 
     this.masterActiveTime = System.currentTimeMillis();
     // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.
-    // Initialize the chunkCreator
-    initializeMemStoreChunkCreator();
+
+    // Only initialize the MemStoreLAB when master carry table
+    if (LoadBalancer.isTablesOnMaster(conf)) {
+      initializeMemStoreChunkCreator();
+    }
     this.fileSystemManager = new MasterFileSystem(conf);
     this.walManager = new MasterWalManager(this);
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/2d0810a0/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
index 44ba65f..1e5e94f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ChunkCreator.java
@@ -135,7 +135,8 @@ public class ChunkCreator {
     return instance;
   }
 
-  static ChunkCreator getInstance() {
+  @VisibleForTesting
+  public static ChunkCreator getInstance() {
     return instance;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/2d0810a0/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 08baff9..839a10e 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
@@ -595,8 +595,7 @@ public class HRegionServer extends HasThread implements
 
       regionServerAccounting = new RegionServerAccounting(conf);
       boolean isMasterNotCarryTable =
-          this instanceof HMaster && !LoadBalancer.isTablesOnMaster(conf) &&
!LoadBalancer
-              .isSystemTablesOnlyOnMaster(conf);
+          this instanceof HMaster && !LoadBalancer.isTablesOnMaster(conf);
       cacheConfig = new CacheConfig(conf, !isMasterNotCarryTable);
       mobCacheConfig = new MobCacheConfig(conf, !isMasterNotCarryTable);
       uncaughtExceptionHandler = new UncaughtExceptionHandler() {

http://git-wip-us.apache.org/repos/asf/hbase/blob/2d0810a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java
index 97e7994..f81c94e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.master;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -233,11 +232,5 @@ public class TestMaster {
     // Assert lock gets put in place again.
     assertTrue(fs.exists(hbckLockPath));
   }
-
-  @Test
-  public void testMasterBlockCache() {
-    // Master not carry table in default, so no need to instantiate block cache, too.
-    assertNull(TEST_UTIL.getMiniHBaseCluster().getMaster().getCacheConfig().getBlockCache());
-  }
 }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/2d0810a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNotCarryTable.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNotCarryTable.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNotCarryTable.java
new file mode 100644
index 0000000..75d9019
--- /dev/null
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNotCarryTable.java
@@ -0,0 +1,90 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.master;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.regionserver.ChunkCreator;
+import org.apache.hadoop.hbase.testclassification.MasterTests;
+import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.apache.hadoop.hbase.util.FSUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Category({MasterTests.class, MediumTests.class})
+public class TestMasterNotCarryTable {
+
+  @ClassRule
+  public static final HBaseClassTestRule CLASS_RULE =
+      HBaseClassTestRule.forClass(TestMasterNotCarryTable.class);
+
+  private static final Logger LOG = LoggerFactory.getLogger(TestMasterNotCarryTable.class);
+
+  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+
+  private static HMaster master;
+
+  @BeforeClass
+  public static void setUp() throws Exception {
+    Configuration c = UTIL.getConfiguration();
+    // We use local filesystem.  Set it so it writes into the testdir.
+    FSUtils.setRootDir(c, UTIL.getDataTestDir());
+    UTIL.startMiniZKCluster();
+    master = new HMaster(UTIL.getConfiguration());
+    master.start();
+    // As no regionservers, only wait master to create AssignmentManager.
+    while (master.getAssignmentManager() != null) {
+      LOG.debug("Wait master to create AssignmentManager");
+      Thread.sleep(1000);
+    }
+  }
+
+  @AfterClass
+  public static void tearDown() throws Exception {
+    master.stop("Shutdown");
+    UTIL.shutdownMiniZKCluster();
+  }
+
+  @Test
+  public void testMasterNotCarryTable() {
+    // The default config is false
+    assertFalse(LoadBalancer.isTablesOnMaster(UTIL.getConfiguration()));
+    assertFalse(LoadBalancer.isSystemTablesOnlyOnMaster(UTIL.getConfiguration()));
+  }
+
+  @Test
+  public void testMasterBlockCache() {
+    // no need to instantiate block cache.
+    assertNull(master.getCacheConfig().getBlockCache());
+  }
+
+  @Test
+  public void testMasterMemStoreLAB() {
+    // no need to instantiate MemStoreLAB.
+    assertNull(ChunkCreator.getInstance());
+  }
+}


Mime
View raw message