You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Josh Elser (JIRA)" <ji...@apache.org> on 2018/01/08 18:06:00 UTC

[jira] [Created] (HBASE-19734) IntegrationTestReplication broken w/ separate clusters

Josh Elser created HBASE-19734:
----------------------------------

             Summary: IntegrationTestReplication broken w/ separate clusters
                 Key: HBASE-19734
                 URL: https://issues.apache.org/jira/browse/HBASE-19734
             Project: HBase
          Issue Type: Bug
          Components: integration tests
            Reporter: Romil Choksi
            Assignee: Josh Elser
            Priority: Critical
             Fix For: 2.0.0-beta-1


{noformat}
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(java.io.IOException): java.io.IOException: Need clean namespaces or table-cfs config firstly when replicate_all flag is true
  at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:463)
  at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
  at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
  at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
Caused by: org.apache.hadoop.hbase.replication.ReplicationException: Need clean namespaces or table-cfs config firstly when replicate_all flag is true
  at org.apache.hadoop.hbase.master.replication.ReplicationManager.checkPeerConfig(ReplicationManager.java:134)
  at org.apache.hadoop.hbase.master.replication.ReplicationManager.addReplicationPeer(ReplicationManager.java:74)
  at org.apache.hadoop.hbase.master.HMaster.addReplicationPeer(HMaster.java:3325)
  at org.apache.hadoop.hbase.master.MasterRpcServices.addReplicationPeer(MasterRpcServices.java:1891)
  at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
  at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:404)
  ... 3 more
{noformat}

{code}
      // setup the replication on the source
      if (!source.equals(sink)) {
        ReplicationAdmin replicationAdmin = new ReplicationAdmin(source.getConfiguration());
        // remove any old replication peers
        for (String oldPeer : replicationAdmin.listPeerConfigs().keySet()) {
          replicationAdmin.removePeer(oldPeer);
        }

        // set the sink to be the target
        ReplicationPeerConfig peerConfig = new ReplicationPeerConfig();
        peerConfig.setClusterKey(sink.toString());

        // set the test table to be the table to replicate
        HashMap<TableName, ArrayList<String>> toReplicate = new HashMap<>();
        toReplicate.put(tableName, new ArrayList<>(0));

        replicationAdmin.addPeer("TestPeer", peerConfig, toReplicate);
{code}

It seems like some change in semantics of ReplicationPeerConfig weren't correctly updated after HBASE-16868 (or a related change maybe). IntegrationTestReplication is trying to replicate a single table but we get into a state where we actually construct a Config object that says "replicate all tables" and "replicate just this one table".

1. We should catch invalid config objects when we construct it via the builder
2. Some Builder interface methods are missing Javadoc
3. We should update IntegrationTestReplication to use the new API.

FYI [~zghaobac], [~stack]



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)