[ 
https://issues.apache.org/jira/browse/HBASE-17732?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Appy updated HBASE-17732:
-------------------------
    Description: 
The two main changes are:
* *Adding template for coprocessor type to CoprocessorEnvironment i.e. 
{{interface CoprocessorEnvironment<C extends Coprocessor>}}*
  ** Enables us to load only relevant coprocessors in hosts. Right now each 
type of host loads all types of coprocs and it's only during execOperation that 
it checks if the coproc is of correct type i.e. XCoprocessorHost will load 
XObserver, YObserver, and all others, and will check in execOperation if 
{{coproc instanceOf XObserver}} and ignore the rest.
  ** Allow sharing of a bunch functions/classes which are currently duplicated 
in each host. For eg. CoprocessorOperations, CoprocessorOperationWithResult, 
execOperations().
* *Introduce 4 coprocessor classes and use composition between these new 
classes and and old observers*
  ** The real gold here is, moving forward, we'll be able to break down giant 
everything-in-one observers (masterobserver has 100+ functions) into smaller, 
more focused observers. These smaller observer can then have different compat 
guarantees!!

Here's a more detailed design doc: 
https://docs.google.com/document/d/1PBEnaqyJeiHvALFswF_yl81-rOpQmZuixCDua-LT9X4/edit

  was:
Adding template for coprocessor type to CoprocessorEnvironment will:
- allow us to load only relevant coprocessors in hosts (right now each type of 
host loads all types of coprocs and it's only during execOperation that it 
checks if the coproc is of correct type i.e. XCoprocessorHost will load 
XObserver, YObserver, and all others, and will check in execOperation if 
{{coproc instanceOf XObserver}} and ignore the rest).
- allow sharing of a bunch functions/classes which are currently 99% duplicate 
of each other. For eg. CoprocessorOperations, CoprocessorOperationWithResult, 
execOperations().

Here's a more detailed design doc: 
https://docs.google.com/document/d/1PBEnaqyJeiHvALFswF_yl81-rOpQmZuixCDua-LT9X4/edit


> Coprocessor Design Improvements
> -------------------------------
>
>                 Key: HBASE-17732
>                 URL: https://issues.apache.org/jira/browse/HBASE-17732
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Appy
>            Assignee: Appy
>         Attachments: HBASE-17732.master.001.patch, 
> HBASE-17732.master.002.patch, HBASE-17732.master.003.patch
>
>
> The two main changes are:
> * *Adding template for coprocessor type to CoprocessorEnvironment i.e. 
> {{interface CoprocessorEnvironment<C extends Coprocessor>}}*
>   ** Enables us to load only relevant coprocessors in hosts. Right now each 
> type of host loads all types of coprocs and it's only during execOperation 
> that it checks if the coproc is of correct type i.e. XCoprocessorHost will 
> load XObserver, YObserver, and all others, and will check in execOperation if 
> {{coproc instanceOf XObserver}} and ignore the rest.
>   ** Allow sharing of a bunch functions/classes which are currently 
> duplicated in each host. For eg. CoprocessorOperations, 
> CoprocessorOperationWithResult, execOperations().
> * *Introduce 4 coprocessor classes and use composition between these new 
> classes and and old observers*
>   ** The real gold here is, moving forward, we'll be able to break down giant 
> everything-in-one observers (masterobserver has 100+ functions) into smaller, 
> more focused observers. These smaller observer can then have different compat 
> guarantees!!
> Here's a more detailed design doc: 
> https://docs.google.com/document/d/1PBEnaqyJeiHvALFswF_yl81-rOpQmZuixCDua-LT9X4/edit



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to