Return-Path: X-Original-To: apmail-hbase-dev-archive@www.apache.org Delivered-To: apmail-hbase-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F358018C13 for ; Fri, 4 Dec 2015 21:22:12 +0000 (UTC) Received: (qmail 39826 invoked by uid 500); 4 Dec 2015 21:22:03 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 39731 invoked by uid 500); 4 Dec 2015 21:22:03 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 39716 invoked by uid 99); 4 Dec 2015 21:22:02 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Dec 2015 21:22:02 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 3BC421A250C for ; Fri, 4 Dec 2015 21:22:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.098 X-Spam-Level: X-Spam-Status: No, score=-0.098 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, MIME_QP_LONG_LINE=0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id dnRuyfKzHOzV for ; Fri, 4 Dec 2015 21:21:49 +0000 (UTC) Received: from mail-pf0-f177.google.com (mail-pf0-f177.google.com [209.85.192.177]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTPS id 178872304B for ; Fri, 4 Dec 2015 21:21:48 +0000 (UTC) Received: by pfu207 with SMTP id 207so31723608pfu.2 for ; Fri, 04 Dec 2015 13:21:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:content-type:content-transfer-encoding:mime-version:subject :message-id:date:references:in-reply-to:to; bh=jC5Lyj+0iU3BpaKwpIjwT1JDxkLCVUzFzLlrQ6xd9+A=; b=0cQi01FLq4FGkgtn0zeiT6lxb2BFqi/EvzMpSJOP526wu7UNDP27AJ3vnBqnhqWlrJ K3TVr5zEBBMqwJ+bSiONX15+9020zGDYDZA6nuUCftD7htZfEivCLwJJyCTIbjcCy4IV EIPVZmAlV7sata4oWNQbm9oQ+CrnQbdsrjD4qeNab5Fe2p59SEPx0JBgBBxIn/yDuJ3a Zy0lCNCgKS8tjN6uYM63NfM0GP04AYeVuCxy31JKTOACDSwQlzXNxPG8zNCfgmoW4eD6 xrJhAwl4RuniNRHM9uj4F/gomeZd2iMcm/RE9qjmAsLhz6WnwCw1BmMGIS9fIZEKEHKW WnqQ== X-Received: by 10.98.15.68 with SMTP id x65mr25040599pfi.146.1449264106612; Fri, 04 Dec 2015 13:21:46 -0800 (PST) Received: from [10.121.131.143] ([166.170.45.128]) by smtp.gmail.com with ESMTPSA id a27sm18990253pfj.36.2015.12.04.13.21.45 for (version=TLSv1/SSLv3 cipher=OTHER); Fri, 04 Dec 2015 13:21:45 -0800 (PST) From: Andrew Purtell Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (1.0) Subject: Re: Consesus on removing a public method from IA.Private class whose instance is returned from IA.public class. Message-Id: <9C535495-0C4E-47BC-B885-F6A8D922077D@gmail.com> Date: Fri, 4 Dec 2015 13:21:43 -0800 References: <8E858C3A39F0D046B420FBA6F75448C066784DC4@szxeml513-mbs.china.huawei.com> <6171871B-E98B-49BD-8A2D-1A98D0DD588A@gmail.com> <26C55F65-D445-4E58-8BB1-9CAAB4894B1E@gmail.com> In-Reply-To: To: dev@hbase.apache.org X-Mailer: iPhone Mail (13B143) I'm fine with either option. Deprecating methods of private classes isn't us= eful IMHO bit I suppose extra 'nice' for users doing things they shouldn't.=20= > On Dec 4, 2015, at 12:50 PM, Apekshit Sharma wrote: >=20 > Ahh.. if I had mentioned it earlier, there wouldn't have been any confusio= n. >=20 > So the thing is, earlier patches (up to v6) are deleting the functions whi= ch > take byte[] or String as argument. > These are like 15 or so 'useless' functions and I believe it's okay to > delete them. >=20 > Later I updated the patch (v7-v8) to mark them deprecated (instead of > deleting) to decouple that jira from discussion [1] >=20 > @Andrew: which patch did you look at? Can you please confirm your take on > this. >=20 > Thanks. >=20 > [1] > https://issues.apache.org/jira/browse/HBASE-14769?focusedCommentId=3D15032= 734&page=3Dcom.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#= comment-15032734 >=20 > On Wed, Dec 2, 2015 at 5:32 PM, Andrew Purtell > wrote: >=20 >> Ok, so no annotation change then. I looked at HBASE-14769. Change there >> seems fine. >>=20 >>=20 >>> On Dec 2, 2015, at 5:03 PM, Apekshit Sharma wrote: >>>=20 >>> In this particular case, we are deleting functions in HBaseAdmin which >> take >>> byte[] or String as argument. >>> HBASE-14769 >>>=20 >>> On Wed, Dec 2, 2015 at 4:56 PM, Andrew Purtell >>=20 >>> wrote: >>>=20 >>>> We also might want to fix the annotation. Like Stack said it depends on= >>>> the particulars. I suggest filing a JIRA. >>>>=20 >>>>> On Dec 2, 2015, at 4:36 PM, Stack wrote: >>>>>=20 >>>>> Appy makes a pretty good argument. >>>>>=20 >>>>> What in particular are we discussing Ashish? >>>>>=20 >>>>> Thanks, >>>>> St.Ack >>>>>=20 >>>>>> On Wed, Dec 2, 2015 at 3:49 PM, Apekshit Sharma >>>> wrote: >>>>>>=20 >>>>>> I think it should be okay to remove them. When I imagine myself on >> other >>>>>> side, a dev using client api of Foo project, and I see a class >> returning >>>>>> reference to an internal class, I would not trust that function. If I= >>>>>> really need something from returned ref, I'd probably use it, and if >> it >>>>>> goes away tomorrow, i'd probably curse it too, but I can't complain >>>> since >>>>>> it's not anything I trusted to being with. >>>>>>=20 >>>>>> Now thinking as dev: >>>>>> Given that documentation explicitly states that functions can >> disappear >>>>>> from private class, and nothing about transitiveness, I believe we ca= n >>>>>> remove functions from private class A. >>>>>>=20 >>>>>>=20 >>>>>>> On Thu, Nov 26, 2015 at 7:10 AM, Ted Yu wrote:= >>>>>>>=20 >>>>>>> bq. we should not remove it directly >>>>>>>=20 >>>>>>> My understanding is the same. >>>>>>>=20 >>>>>>> Cheers >>>>>>>=20 >>>>>>> On Wed, Nov 25, 2015 at 10:22 PM, ashish singhi < >>>>>> ashish.singhi@huawei.com> >>>>>>> wrote: >>>>>>>=20 >>>>>>>> Hello to all. >>>>>>>>=20 >>>>>>>> I know that we can safely remove any APIs from a >>>>>>> InterfaceAudience.Private >>>>>>>> class and the same is described in the HBase book. >>>>>>>>=20 >>>>>>>> Now consider a case (I did not find this mentioned in our semvar), >>>>>>>> There is a class 'A' with InterfaceAudience.Private and class 'B' >> with >>>>>>>> InterfaceAudience.Public and then there is a public API in class 'B= ' >>>>>>> which >>>>>>>> returns an instance of class 'A'. (We missed to mark the public >> method >>>>>> in >>>>>>>> class 'B' as deprecated when we marked the class 'A' as >>>>>>>> InterfaceAudience.Private). >>>>>>>>=20 >>>>>>>> Now the question is, can we remove the public APIs from class 'A' >>>>>> without >>>>>>>> marking them deprecated ? >>>>>>>>=20 >>>>>>>> I think we should not remove it directly, it will break the users >>>> using >>>>>>>> these(removed) public methods from class 'A'. >>>>>>>> P.S: This point came up in HBASE-14769. >>>>>>>>=20 >>>>>>>> Regards, >>>>>>>> Ashish Singhi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> -- >>>>>>=20 >>>>>> Regards >>>>>>=20 >>>>>> Apekshit Sharma | Software Engineer, Cloudera | Palo Alto, California= >> | >>>>>> 650-963-6311 >>>=20 >>>=20 >>>=20 >>> -- >>>=20 >>> Regards >>>=20 >>> Apekshit Sharma | Software Engineer, Cloudera | Palo Alto, California | >>> 650-963-6311 >=20 >=20 >=20 > --=20 >=20 > Regards >=20 > Apekshit Sharma | Software Engineer, Cloudera | Palo Alto, California | > 650-963-6311