[GitHub] [hbase] HorizonNet commented on a change in pull request #1722: HBASE-24359 Optionally ignore edits for deleted CFs for replication
HorizonNet commented on a change in pull request #1722: URL: https://github.com/apache/hbase/pull/1722#discussion_r426836467 ## File path: hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEditsDroppedWithDeletedTableCFs.java ## @@ -0,0 +1,250 @@ +/** + * 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.replication; + +import static org.apache.hadoop.hbase.HConstants.REPLICATION_SCOPE_GLOBAL; +import static org.apache.hadoop.hbase.HConstants.ZOOKEEPER_ZNODE_PARENT; +import static org.apache.hadoop.hbase.replication.regionserver.HBaseInterClusterReplicationEndpoint.REPLICATION_DROP_ON_DELETED_COLUMN_FAMILY_KEY; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.util.Arrays; +import java.util.stream.Collectors; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.HBaseClassTestRule; +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.HBaseTestingUtility; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; +import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.JVMClusterUtil; +import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +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({ LargeTests.class }) +public class TestReplicationEditsDroppedWithDeletedTableCFs { + + @ClassRule + public static final HBaseClassTestRule CLASS_RULE = + HBaseClassTestRule.forClass(TestReplicationEditsDroppedWithDeletedTableCFs.class); + + private static final Logger LOG = + LoggerFactory.getLogger(TestReplicationEditsDroppedWithDeletedTableCFs.class); + + private static Configuration conf1 = HBaseConfiguration.create(); + private static Configuration conf2 = HBaseConfiguration.create(); + + protected static HBaseTestingUtility utility1; + protected static HBaseTestingUtility utility2; + + private static Admin admin1; + private static Admin admin2; + + private static final TableName TABLE = TableName.valueOf("table"); + private static final byte[] NORMAL_CF = Bytes.toBytes("normal_cf"); + private static final byte[] DROPPED_CF = Bytes.toBytes("dropped_cf"); + + private static final byte[] ROW = Bytes.toBytes("row"); + private static final byte[] QUALIFIER = Bytes.toBytes("q"); + private static final byte[] VALUE = Bytes.toBytes("value"); + + private static final String PEER_ID = "1"; + private static final long SLEEP_TIME = 1000; + private static final int NB_RETRIES = 10; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { +// Set true to filter replication edits for dropped table +conf1.setBoolean(REPLICATION_DROP_ON_DELETED_COLUMN_FAMILY_KEY, true); +conf1.set(ZOOKEEPER_ZNODE_PARENT, "/1"); +conf1.setInt("replication.source.nb.capacity", 1); +utility1 = new HBaseTestingUtility(conf1); +utility1.startMiniZKCluster(); +MiniZooKeeperCluster miniZK = utility1.getZkCluster(); +conf1 = utility1.getConfiguration(); + +conf2 = HBaseConfiguration.create(conf1); +conf2.set(ZOOKEEPER_ZNODE_PARENT, "/2"); +utility2 = new HBaseTestingUtility(conf2); +utility2.setZkCluster(miniZK); + +utility1.startMiniCluster(1); +utility2.startMiniCluster(1); + +admin1 = utility1.getAdmin(); +admin2 = utility2.getAdmin(); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { +
[GitHub] [hbase] HorizonNet commented on a change in pull request #1722: HBASE-24359 Optionally ignore edits for deleted CFs for replication
HorizonNet commented on a change in pull request #1722: URL: https://github.com/apache/hbase/pull/1722#discussion_r426241594 ## File path: hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEditsDroppedWithDroppedTable.java ## @@ -0,0 +1,251 @@ +/** + * 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.replication; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.fail; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.HBaseTestingUtility; +import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.HTableDescriptor; +import org.apache.hadoop.hbase.NamespaceDescriptor; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.replication.regionserver.HBaseInterClusterReplicationEndpoint; +import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.JVMClusterUtil; +import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Category({ LargeTests.class }) +public class TestReplicationEditsDroppedWithDroppedTable { + + private static final Logger LOG = LoggerFactory.getLogger(TestReplicationEditsDroppedWithDroppedTable.class); + + private static Configuration conf1 = HBaseConfiguration.create(); + private static Configuration conf2 = HBaseConfiguration.create(); + + protected static HBaseTestingUtility utility1; + protected static HBaseTestingUtility utility2; + + private static Admin admin1; + private static Admin admin2; + + private static final String namespace = "NS"; + private static final TableName NORMAL_TABLE = TableName.valueOf("normal-table"); + private static final TableName DROPPED_TABLE = TableName.valueOf("dropped-table"); + private static final TableName DROPPED_NS_TABLE = TableName.valueOf("NS:dropped-table"); + private static final byte[] ROW = Bytes.toBytes("row"); + private static final byte[] FAMILY = Bytes.toBytes("f"); + private static final byte[] QUALIFIER = Bytes.toBytes("q"); + private static final byte[] VALUE = Bytes.toBytes("value"); + + private static final String PEER_ID = "1"; + private static final long SLEEP_TIME = 1000; + private static final int NB_RETRIES = 10; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { +// Set true to filter replication edits for dropped table + conf1.setBoolean(HBaseInterClusterReplicationEndpoint.REPLICATION_DROP_ON_DELETED_TABLE_KEY, true); +conf1.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/1"); +conf1.setInt("replication.source.nb.capacity", 1); +utility1 = new HBaseTestingUtility(conf1); +utility1.startMiniZKCluster(); +MiniZooKeeperCluster miniZK = utility1.getZkCluster(); +conf1 = utility1.getConfiguration(); + +conf2 = HBaseConfiguration.create(conf1); +conf2.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/2"); +utility2 = new HBaseTestingUtility(conf2); +utility2.setZkCluster(miniZK); + +utility1.startMiniCluster(1); +utility2.startMiniCluster(1); + +admin1 = utility1.getAdmin(); +admin2 = utility2.getAdmin(); + +NamespaceDescriptor nsDesc = NamespaceDescriptor.create(namespace).build(); +admin1.createNamespace(nsDesc); +admin2.createNamespace(nsDesc); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { +utility2.shutdownMiniCluster(); +utility1.shutdownMiniCluster(); + } + + @Before + public void setup() throws Exception { +// Roll log +for (JVMClusterUtil.RegionServerThread r :