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 ACC1E200D01 for ; Fri, 22 Sep 2017 18:07:59 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id AB1DB1609BE; Fri, 22 Sep 2017 16:07:59 +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 F04B61609A7 for ; Fri, 22 Sep 2017 18:07:58 +0200 (CEST) Received: (qmail 32661 invoked by uid 500); 22 Sep 2017 16:07:57 -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 32650 invoked by uid 99); 22 Sep 2017 16:07:57 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Sep 2017 16:07:57 +0000 Received: from hw10447.local (unknown [167.102.188.146]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id C93AF1A00FB for ; Fri, 22 Sep 2017 16:07:56 +0000 (UTC) Subject: Re: [DISCUSS] Increase stability on o.a.h.h.Tag? To: dev@hbase.apache.org References: <942443df-ad4a-ccd2-6cbd-a8696f88ea30@apache.org> <699f1bd4-5fb8-5b2b-2092-0fa75c6b1fec@apache.org> From: Josh Elser Message-ID: <0eb2ac82-5903-796b-35b8-f9aefdb1c27d@apache.org> Date: Fri, 22 Sep 2017 12:07:54 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:56.0) Gecko/20100101 Thunderbird/56.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit archived-at: Fri, 22 Sep 2017 16:07:59 -0000 I can appreciate how we've gotten to this point, it just struck me extremely odd that the contents of a Tag weren't expected to be accessed by users. "Arbitrary metadata that rides along with a cell, you just can't see that metadata" ;) I totally understand not wanting to let another thing come into 2.0. Like MikeD said, let's hope for a faster 3.0 and we can slate this for that time. Thanks for entertaining the discussion. We'll just deal with the "downstream pain" for 2.0. On 9/22/17 1:32 AM, ramkrishna vasudevan wrote: > CellUtil similar type of methods. Coming to Tags yes there are not much > cases where clients can directly set Tags. And I think we don't expose any > APIs which allow you to use mutations with Tags. So probably moving to > LimitedPrivate is better and mark with Evolving if there are some users > depending on the internals of Tags and its impl. But this will be a One of > case. > > And also since Tags are internal ideally the CellUtil#getTAgs() should have > been in another Util method that is exposed with LimitedPrivate and also > Tags if tags should be made LimitedPRivate. So this may help in not having > a PRivate interface like Tag in a public CellUtil class. > > 3.0 is fine but need some clean up in 2.0? Indicating what could happen > going forward from 2.0? > > Regards > Ram > > > > On Fri, Sep 22, 2017 at 2:59 AM, Sean Busbey wrote: > >> Yeah. I mean, I think we should improve the situation. Just think >> it's too much to bite off at this stage of 2.0, we can aim for 3.0 and >> start working in some tooling to help us. >> >> On Thu, Sep 21, 2017 at 3:35 PM, Josh Elser wrote: >>> That really makes me groan (we have downstream users depending on code >> we've >>> explicitly said "don't use"), but if that's what it is given the current >>> state, so be it. My complaining won't fix it. >>> >>> Thanks. >>> >>> >>> On 9/21/17 4:25 PM, Sean Busbey wrote: >>>> >>>> We have lots of examples of including non-Public stuff in Public APIs. >>>> we have docs that advise folks to be wary on relying on them beyond >>>> opaque symbols. >>>> >>>> ref: http://hbase.apache.org/book.html#hbase.client.api.surface >>>> >>>> On Thu, Sep 21, 2017 at 3:21 PM, Josh Elser wrote: >>>>> >>>>> I was going to suggest LimitedPrivate in my original, but this doesn't >>>>> make >>>>> sense as we're exposing Public API via CellUtil. >>>>> >>>>> It seems odd to me that we wouldn't treat the cell tags as a supported >>>>> API >>>>> call. However, I'm happy to remain "confused" if the rest of folks >> don't >>>>> consider tags to be intended for users :) >>>>> >>>>> >>>>> On 9/21/17 3:15 PM, Ted Yu wrote: >>>>>> >>>>>> >>>>>> Can we mark Tag LimitedPrivate ? >>>>>> >>>>>> We know how ATS uses Tags so it should be straight forward to keep >> their >>>>>> usage intact. >>>>>> >>>>>> On Thu, Sep 21, 2017 at 12:03 PM, Josh Elser >> wrote: >>>>>> >>>>>>> Hiya, >>>>>>> >>>>>>> (Background, I'm starting what is likely to be an onerous task of >>>>>>> looking >>>>>>> through downstream components and seeing what is broken with the >> latest >>>>>>> hbase-2.0.0*) >>>>>>> >>>>>>> Looking at YARN's use of HBase for the Application TimelineServer, I >>>>>>> see >>>>>>> that they're relying on the Tag interface. >>>>>>> >>>>>>> Presently, Tag is marked as Private, yet we expose it via the Public >>>>>>> CellUtil. >>>>>>> >>>>>>> My gut reaction is that we should bump Tag up Public since the intent >>>>>>> is >>>>>>> for downstream users to, ya know, use those Tags. Any objections? >>>>>>> >>>>>>> If we don't want to expose Tag, we should make a pass over the Public >>>>>>> methods and mark them as Private (so not as to provide a Public >> method >>>>>>> with >>>>>>> Private objects). CellUtil#getTag(Cell, byte) would be one such >>>>>>> example. >>>>>>> >>>>>>> - Josh >>>>>>> >>>>>> >>>>> >>> >> >