Tags are server side internal metadata. Some carry sensitive information like labels. I guess this could appear odd if not around for discussion when they were introduced. So what documentation can be improved to lessen the surprise? Javadoc? Online book? A JIRA with suggestions welcome.
> On Sep 22, 2017, at 9:07 AM, Josh Elser <els...@apache.org> wrote: > > 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 <bus...@apache.org> 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 <els...@apache.org> 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 <els...@apache.org> 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 <els...@apache.org> >>> 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 >>>>>>>> >>>>>>> >>>>>> >>>> >>>