2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 package org
.apache
.hadoop
.hbase
.client
;
20 import static org
.junit
.Assert
.assertEquals
;
22 import org
.apache
.hadoop
.hbase
.HBaseClassTestRule
;
23 import org
.apache
.hadoop
.hbase
.HConstants
;
24 import org
.apache
.hadoop
.hbase
.TableDescriptors
;
25 import org
.apache
.hadoop
.hbase
.TableName
;
26 import org
.apache
.hadoop
.hbase
.master
.HMaster
;
27 import org
.apache
.hadoop
.hbase
.testclassification
.MediumTests
;
28 import org
.apache
.hadoop
.hbase
.testclassification
.MiscTests
;
29 import org
.junit
.BeforeClass
;
30 import org
.junit
.ClassRule
;
31 import org
.junit
.Test
;
32 import org
.junit
.experimental
.categories
.Category
;
35 * Make sure we will honor the {@link HConstants#META_REPLICAS_NUM}.And also test upgrading.
37 @Category({ MiscTests
.class, MediumTests
.class })
38 public class TestIncreaseMetaReplicaThroughConfig
extends MetaWithReplicasTestBase
{
41 public static final HBaseClassTestRule CLASS_RULE
=
42 HBaseClassTestRule
.forClass(TestIncreaseMetaReplicaThroughConfig
.class);
45 public static void setUp() throws Exception
{
50 public void testUpgradeAndIncreaseReplicaCount() throws Exception
{
51 HMaster oldMaster
= TEST_UTIL
.getMiniHBaseCluster().getMaster();
52 TableDescriptors oldTds
= oldMaster
.getTableDescriptors();
53 TableDescriptor oldMetaTd
= oldTds
.get(TableName
.META_TABLE_NAME
);
54 assertEquals(3, oldMetaTd
.getRegionReplication());
55 // force update the replica count to 1 and then kill the master, to simulate that hen upgrading,
56 // we have no region replication in meta table descriptor but we actually have meta region
58 oldTds
.update(TableDescriptorBuilder
.newBuilder(oldMetaTd
).setRegionReplication(1).build());
59 oldMaster
.stop("Restarting");
60 TEST_UTIL
.waitFor(30000, () -> oldMaster
.isStopped());
62 // increase replica count to 5 through Configuration
63 TEST_UTIL
.getMiniHBaseCluster().getConfiguration().setInt(HConstants
.META_REPLICAS_NUM
, 5);
64 TEST_UTIL
.getMiniHBaseCluster().startMaster();
65 TEST_UTIL
.waitFor(30000,
66 () -> TEST_UTIL
.getZooKeeperWatcher().getMetaReplicaNodes().size() == 5);