This is no coincidence, Linux kernel modules (specifically the security
ones, and what enables them) were some direct inspiration.  :-)

I may have said this before but I think stable interfaces for coprocessors
comes into play only once we are doing HBASE-4047, and even then I would
expect an eventing model where the vocabulary evolves from release to
release.


On Wed, Feb 12, 2014 at 1:22 PM, Todd Lipcon <t...@cloudera.com> wrote:

> On Wed, Feb 12, 2014 at 12:46 PM, Gary Helmling <ghelml...@gmail.com>
> wrote:
>
> > >
> > > 'Repurpose' might not be the way I would put it.
> > >
> > > Coprocessors were and are a means for internal server extension by
> mixin.
> > > The original problem we solved was needing to subclass HRegionServer
> and
> > > other classes to extend core HBase functions, but having more than one
> > > otherwise orthogonal extension that users want to use. Now we can mix
> in
> > > multiple extensions with a framework that has some simple rules for
> > > cooperation between the extensions.
> > >
> > > We return to the earlier state of affairs with modules. Sure, we can
> plug
> > > in an alternate behavior with a module that subclasses and extends the
> > > default, say flush strategy, but we can't then instantiate multiple
> > modules
> > > into the same slot, both subclassing the same base but doing different
> > > things.
> > >
> > >
> >
> > I agree the ability to compose coprocessors in order to extend behavior
> is
> > a key capability that we should not throw out.
> >
> > I think the current Observer APIs could probably do with a bit of
> > reorganization to make them a little more accessible and comprehensible.
>  I
> > think there is also an emerging need to see if we can define some subset
> of
> > these APIs that we can stabilize for easier public consumption, while
> > keeping the rest of the APIs free to evolve as needed as HBase internals
> > change (since these are an extension mechanism for internal behaviors).
> >  I'm not sure we've really seen enough commonality emerge yet to say what
> > those APIs are though.  We could try to define the public subset as those
> > involved in client requests, but flush and compaction, for example, can
> > also be triggered by client requests.  And my own use of coprocessor APIs
> > lately has been focused on overriding the flush and compaction behaviors,
> > not on client requests.
> >
> > I think the best place to start is by breaking up some of the current
> APIs,
> > grouping them around behaviors or areas of functionality.  Whether we
> call
> > some of these "coprocessors" and others "plugins" is a question of
> > branding.  I do think it's important to figure out which we can stabilize
> > and offer longer term contracts for.  But whatever we call them, I
> strongly
> > agree that we should maintain the "mixin" / composition approach and not
> > return to a simple fixed inheritance scheme.
> >
>
> I've always considered coprocessors to be the "kernel modules" of the HBase
> world. They give you way more power than user-space programming, but come
> with the cautions that if you make a mistake, you'll crash your whole
> system or trigger unexpected behavior.
>
> Given that, I don't think we should really be spending too much effort on
> coprocessor API stability. If we make this a requirement, it can hamper the
> ability of the HBase core developers to make good changes which really
> improve the system. I don't think we're at the level of maturity as a
> project where this is the right tradeoff, as of yet.
>
> For what it's worth, the Linux kernel module API is also not
> stable/compatible between versions. This document is a good read:
>
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/stable_api_nonsense.txt
>
> I do think we should seek to keep the interfaces stable through *patch*
> level releases -- a bug fix shouldn't break a coprocessor API. But between
> minor releases that add new features, it seems like an unnecessary
> restriction.
>
> -Todd
> --
> Todd Lipcon
> Software Engineer, Cloudera
>



-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)

Reply via email to