Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 0452E200C34 for ; Mon, 27 Feb 2017 14:41:56 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 02E40160B6C; Mon, 27 Feb 2017 13:41:56 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4C7BB160B60 for ; Mon, 27 Feb 2017 14:41:55 +0100 (CET) Received: (qmail 78481 invoked by uid 500); 27 Feb 2017 13:41:50 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 78470 invoked by uid 99); 27 Feb 2017 13:41:49 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Feb 2017 13:41:49 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 2EA4CC31BE for ; Mon, 27 Feb 2017 13:41:49 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.451 X-Spam-Level: * X-Spam-Status: No, score=1.451 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_NEUTRAL=0.652] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id wAZwqMSGID31 for ; Mon, 27 Feb 2017 13:41:48 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 30D4D5FE16 for ; Mon, 27 Feb 2017 13:41:48 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id AC5BBE031F for ; Mon, 27 Feb 2017 13:41:46 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 688ED2414A for ; Mon, 27 Feb 2017 13:41:45 +0000 (UTC) Date: Mon, 27 Feb 2017 13:41:45 +0000 (UTC) From: "Ashish Singhi (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-17460) enable_table_replication can not perform cyclic replication of a table MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Mon, 27 Feb 2017 13:41:56 -0000 [ https://issues.apache.org/jira/browse/HBASE-17460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15885795#comment-15885795 ] Ashish Singhi commented on HBASE-17460: --------------------------------------- ReplicationAdmin#enableTableRep is a public API from a interface audience public class, we cannot change the method signature just like that. Earlier ReplicationAdmin#enableTableRep behavior was, user was allowed to enable replication on a CF later also if user didn't do it the first time, but with this change user will not be able to do this using this API. Is it really required to check for localHtd.isReplicationEnabled() and throw exception even if its enabled on some CF and not all, what will happen if we do not do ? Sorry for being later here, The jira was raised for handling cyclic replication in ReplicationAdmin#enableTableRep API, for that I think the simple fix would have been just to avoid the replication scope check for source and peer HTD. But looks like we have introduced a behavior change in a public API :( > 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-addendum.txt, 17460-addendum.v2.txt, 17460.branch-1.v3.txt, 17460.v5.txt, HBASE-17460-branch-1-v5-plusaddendum-v2.patch, 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)