You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Janos Gub (JIRA)" <ji...@apache.org> on 2017/02/23 15:13:45 UTC

[jira] [Comment Edited] (HBASE-17460) enable_table_replication can not perform cyclic replication of a table

    [ https://issues.apache.org/jira/browse/HBASE-17460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15880613#comment-15880613 ] 

Janos Gub edited comment on HBASE-17460 at 2/23/17 3:13 PM:
------------------------------------------------------------

[~nitin.verma@gmail.com] I was wondering about the backward compatibility of the patch (the behavior of the function) and I have the following question:
Is this code part necessary? Would this function work as before without it?
{code:java|title=HBaseAdmin.java}
if (localHtd.isReplicationEnabled()) {
       throw new IllegalArgumentException("Table " + tableName.getNameAsString()
       + " has replication already enabled for at least one Column Family.");
 }
{code}


was (Author: gubjanos):
[~nitin.verma@gmail.com] I was wondering about the backward compatibility of the patch (the behavior of the function) and I have the following question:
Is this code part necessary? Would this function work as before without it?
{code:java|title=HBaseAdmin.java}
if (localHtd.isReplicationEnabled()) {
       throw new IllegalArgumentException("Table " + tableName.getNameAsString()
       + " has replication already enabled for at least one Column Family.");
 }
}
{code}

> enable_table_replication can not perform cyclic replication of a table
> ----------------------------------------------------------------------
>
>                 Key: HBASE-17460
>                 URL: https://issues.apache.org/jira/browse/HBASE-17460
>             Project: HBase
>          Issue Type: Bug
>          Components: Replication
>            Reporter: NITIN VERMA
>            Assignee: NITIN VERMA
>              Labels: incompatibleChange, replication
>             Fix For: 2.0.0
>
>         Attachments: 17460.branch-1.v3.txt, 17460.v5.txt, HBASE-17460.patch, HBASE-17460_v2.patch, HBASE-17460_v3.patch, HBASE-17460_v4.patch
>
>   Original Estimate: 96h
>  Remaining Estimate: 96h
>
> The enable_table_replication operation is broken for cyclic replication of HBase table as we compare all the properties of column families (including REPLICATION_SCOPE). 
> Below is exactly what happens:
> 1.  Running "enable_table_replication 'table1'  " opeartion on first cluster will set the REPLICATION_SCOPE of all column families to peer id '1'. This will also create a table on second cluster where REPLICATION_SCOPE is still set to peer id '0'.
> 2. Now when we run "enable_table_replication 'table1'" on second cluster, we compare all the properties of table (including REPLICATION_SCOPE_, which obviously is different now. 
> I am proposing a fix for this issue where we should avoid comparing REPLICATION_SCOPE inside HColumnDescriotor::compareTo() method, especially when replication is not already enabled on the desired table.
> I have made that change and it is working. I will submit the patch soon.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)