[ 
https://issues.apache.org/jira/browse/HBASE-19734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Josh Elser updated HBASE-19734:
-------------------------------
    Status: Patch Available  (was: Open)

> 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
>
>         Attachments: HBASE-19734.001.branch-2.patch
>
>
> {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)

Reply via email to