From commits-return-80098-archive-asf-public=cust-asf.ponee.io@hbase.apache.org Thu Nov 1 09:27:01 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 0CD3E180652 for ; Thu, 1 Nov 2018 09:27:00 +0100 (CET) Received: (qmail 29434 invoked by uid 500); 1 Nov 2018 08:27:00 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 29425 invoked by uid 99); 1 Nov 2018 08:26:59 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2018 08:26:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7CC77DFFA2; Thu, 1 Nov 2018 08:26:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: zghao@apache.org To: commits@hbase.apache.org Message-Id: <1f33251f910b4f1e820c1088d739dc93@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hbase git commit: HBASE-21388 No need to instantiate MemStoreLAB for master which not carry table Date: Thu, 1 Nov 2018 08:26:59 +0000 (UTC) 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 Authored: Mon Oct 29 11:50:53 2018 +0800 Committer: Guanghao Zhang 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()); + } +}