[
https://issues.apache.org/jira/browse/HBASE-17460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15881617#comment-15881617
]
Enis Soztutar commented on HBASE-17460:
---------------------------------------
Sorry to come in late. Can you please address these review comments as well. An
addendum is fine, otherwise, we need to revert again
- {{copyReplicationScope()}} should be private.
- {{copyReplicationScope()}}
- In Java convention, the open parenthesis should be in the same line:
{code}
+ public int copyReplicationScope(final HTableDescriptor localHtd)
+ {
{code}
and
{code}
+ if (remoteHCDName.equals(localHCDName))
+ {
{code}
- copyReplicationScope() should return a boolean instead.
- You don't check whether there are equal number of column families in the
HTDs. Iterating like this will not fail if either of them contains smaller
number of column families.
{code}
while (remoteHCDIter.hasNext() && localHCDIter.hasNext()) {
{code}
- The following
{code}
if (result == true) {
{code}
should be {{ if (result) }}
- The methods compareForReplication, etc should not be in HTD. They are very
replication specific. Can we please move them to a replication-related utility
class, or keep them private in Admin.
- compareForReplication() should take HTD as an argument. No need to take a
generic object (unlike the generic equals() method).
> 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)