hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chia-Ping Tsai"<chia7...@apache.org>
Subject Re: [DISCUSS] Introduce the limited private to filter
Date Thu, 21 Sep 2017 07:19:11 GMT
> Could we have a Filter interface that is IA.Public and contains no methods?
> Just a marker interface that gives users something they can assign to? Then
> FilterBase becomes IA.LimitedPrivate?
We can't modify Filter's API before running the proper deprecate cycle, so I prefer introducing
new class to do what you suggest.

All i want to do is to separate the data and control from Filter. The former, which should
be a POJO class and exposed as IA.Public, is used by normal users who apply only built-in
filters and pay no attention to impl details. The latter, which is the current filters and
should be exposed as IA.LimitedPrivate, work for advanced user who want to build custom filter
and understand the hbase's read path.

All issues we need to address are shown below:
1) Make all filter IA.LimitedPrivate and Stable
2) Introduce POJO class(maybe call it "FilterName" or "FilterProvider") for carrying the necessary
data to build a filter.
3) add the POJO calss for all built-in filter 
4) Introduce setFilter(FilterName) as a replacement for setFilter(Filter) - the setFilter(Filter)
will call setFilter(FilterName) internally.

For normal user in 2.0, all built-in filters work well, as usual. But they need to prepare
somethings for 3.0. For example,
{code}
RowFilter filter = new RowFilter()
{code}
will be changed to
{code}
RowFilterName filter = new RowFilterName()
{code}

For advanced user in 2.0, their filters work well, as usual. But they need to implement FilterName
for their filters when they deploy 3.0.

Chia-Ping

On 2017-09-21 05:26, Mike Drob <mdrob@apache.org> wrote: 
> Could we have a Filter interface that is IA.Public and contains no methods?
> Just a marker interface that gives users something they can assign to? Then
> FilterBase becomes IA.LimitedPrivate?
> 
> This might be awful for current users, I'm trying to explore in a new
> direction though.
> 
> 
> Mike
> 
> On Wed, Sep 20, 2017 at 4:10 PM, Stack <stack@duboce.net> wrote:
> 
> > I was looking at the patch on HBASE-18811
> > <https://issues.apache.org/jira/browse/HBASE-18811> to implement what has
> > since turned into this DISCUSSION.
> >
> > Get and Scan allow setting Filters.
> >
> > This means user must create them to pass in.
> >
> > If filters become LimitedPrivate, I'd imagine this will give users pause;
> > they'll ask if they should be using classes w/ this annotation.
> >
> > In refguide, it says "LimitedPrivate: used for internals we expect to be
> > pluggable, such as coprocessors" which does not provide much by way of
> > solace.
> >
> > It is as though Filter instances and their constructors should be public
> > but all else about them private. Not sure how we convey that w/ current
> > annotation vocabulary.
> >
> > Thanks,
> > M
> >
> >
> >
> > On Wed, Sep 20, 2017 at 9:41 AM, Stack <stack@duboce.net> wrote:
> >
> > > Thanks Dave for chiming in.
> > >
> > > I like the suggestion Chia-Ping of LimittedPrivate + Stable.
> > >
> > > St.Ack
> > >
> > > On Wed, Sep 20, 2017 at 6:51 AM, Dave Latham <latham@davelink.net>
> > wrote:
> > >
> > >> Thanks, Chia-Ping.  I don't want to hold up improvements in HBase
> > >> internals
> > >> on behalf of Filters.  Changing at major releases sounds reasonable.
> > >>
> > >> On Wed, Sep 20, 2017 at 12:32 AM, Chia-Ping Tsai <chia7712@apache.org>
> > >> wrote:
> > >>
> > >> > An alternative is that we make Filter IA.LimitedPrivate and
> > >> > InterfaceStability.Stable, so we guarantee the FIlter's APIs won't
be
> > >> > changed in the patch/minor release. It seems to me the changing
> > >> Filter's IA
> > >> > declaration is necessary. The filter's APIs deeply embedded in our
> > read
> > >> > path and thus the filter may hinder our improvement in given major
> > >> release
> > >> > because we have to do the proper deprecation cycle for IA.Public.
I
> > >> DON'T
> > >> > want to change the Filter's APIs at the present time, but we should
> > get
> > >> > everything ready beforehand.
> > >> >
> > >> > On 2017-09-19 00:41, Dave Latham <latham@davelink.net> wrote:
> > >> > > Speaking on behalf of one HBase deployment, we do rely on custom
> > >> filters,
> > >> > > though have so far stayed away from more internal customizations
> > such
> > >> as
> > >> > > co-processors.  We've gotten the sense over the years that Filters
> > >> were
> > >> > > fairly stable and seemed more reliable in that sense.  I'd be
sad
> > if a
> > >> > > change like this meant that more caution will need to be used
in
> > >> order to
> > >> > > rely on Filters.  I understand that some cleanup may need to
happen
> > >> (e.g.
> > >> > > HBASE-13346) but hope that we can still be conservative in breaking
> > >> the
> > >> > > Filter apis.
> > >> > >
> > >> > > On Sat, Sep 16, 2017 at 7:27 PM, Chia-Ping Tsai <
> > chia7712@apache.org>
> > >> > wrote:
> > >> > >
> > >> > > > hi stack
> > >> > > > I have filed https://issues.apache.org/jira/browse/HBASE-18811.
> > >> FYI.
> > >> > > >
> > >> > > > On 2017-09-17 05:31, Stack <stack@duboce.net> wrote:
> > >> > > > > It is an oversight that Filters are not annotated as
> > >> > (limited)private. We
> > >> > > > > are unable to guarantee them what public entails given
their
> > >> design
> > >> > is as
> > >> > > > > yet imperfect and that they are interpolated at points
subject
> > to
> > >> > change.
> > >> > > > >
> > >> > > > > +1 on taking them limited private in 2.0.0.
> > >> > > > >
> > >> > > > > Thanks for bringing this up Chia-Ping Tsai. Apt.
> > >> > > > >
> > >> > > > > St.Ack
> > >> > > > >
> > >> > > > >
> > >> > > > > On Sat, Sep 16, 2017 at 4:02 AM, Chia-Ping Tsai <
> > >> chia7712@apache.org
> > >> > >
> > >> > > > wrote:
> > >> > > > >
> > >> > > > > > Hi, Folks!
> > >> > > > > >
> > >> > > > > > We have many powerful callback functions to help
user to build
> > >> > amazing
> > >> > > > > > application/services. The most of functions are
declared as
> > >> > > > > > IA.LimitedPrivate excluding the filters. As i
see it, the
> > >> > > > IA.LimitedPrivate
> > >> > > > > > will make the improvement of filter more flexible.
Also, we
> > can
> > >> > > > introduce
> > >> > > > > > more server-side components to filters.
> > >> > > > > >
> > >> > > > > > https://issues.apache.org/jira/browse/HBASE-9529
had already
> > >> left
> > >> > the
> > >> > > > > > TODO "add filter limited private level" on FilterBase.
I feel
> > >> it is
> > >> > > > time to
> > >> > > > > > discuss it again.
> > >> > > > > >
> > >> > > > > > Thanks,
> > >> > > > > > Chia-Ping Tsai
> > >> > > > > >
> > >> > > > > >
> > >> > > > >
> > >> > > >
> > >> > >
> > >> >
> > >>
> > >
> > >
> >
> 

Mime
View raw message