[ 
https://issues.apache.org/jira/browse/HBASE-12260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16208810#comment-16208810
 ] 

stack edited comment on HBASE-12260 at 10/18/17 5:02 AM:
---------------------------------------------------------

Resolving as "won't fix".

The direction I was taking here, and the direction on the RegionServer side 
done in HBASE-18183, has been superceded by a superior approach up in 
HBASE-19007, Align Services Interfaces in Master and RegionServer (HBASE_18183 
was committed, HBASE-19007 changes it).

In here, we took a pure approach than that pursued in HBASE-18183. In here, we 
gave MasterServices and Services a pruning shearing all of the IA.Private 
classes to make MS and S for for Coprocessor consumption (All exposed classes 
were InterfaceAudience.LimitedPrivate or Public, no IA.Private classes 
exposed). Internally, we then did a bunch of code refactoring to make it so 
Tests, Managers, and Services, rather than use MasterServices, instead used 
HMaster explicitly everywhere; i.e. use the actual implementation rather than 
an Interface.

HBASE_18183 did somewhat similar but left over a special 
CoprocessorRegionServerServices, yet-another-interface, that was to give CPs a 
subset of RegionServerServices.

HBASE-19007 was about unifying the approaches but we were hung up on how to 
expose Server or some set of MasterServices or RegionServerServices to CPs. 
Discussion up on HBASE-19007 came up with a superior approach, not exposing 
Server or Master/RegionServerServices to Coprocessors at all.


was (Author: stack):
Resolving as "won't fix".

The direction I was taking here, and the direction on the RegionServer side 
done in HBASE-18183, has been superceded by a superior approach up in 
HBASE-19007.

In here, we took a more pure approach than that pursued in HBASE-18183. In 
here, we gave MasterServices and Services a pruning shearing all of the 
IA.Private classes to make MS and S for for Coprocessor consumption (All 
exposed classes were InterfaceAudience.LimitedPrivate or Public, no IA.Private 
classes exposed). Internally, we then did a bunch of code refactoring to make 
it so Tests, Managers, and Services, rather than use MasterServices, instead 
used HMaster explicitly everywhere; i.e. use the actual implementation rather 
than an Interface.

> MasterServices needs a short-back-and-sides; pare-back exposure of internals 
> and IA.Private classes
> ---------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-12260
>                 URL: https://issues.apache.org/jira/browse/HBASE-12260
>             Project: HBase
>          Issue Type: Sub-task
>          Components: master
>            Reporter: ryan rawson
>            Assignee: stack
>            Priority: Critical
>             Fix For: 2.0.0-alpha-4
>
>         Attachments: HBASE-12260.master.001.patch, 
> HBASE-12260.master.002.patch, HBASE-12260.master.003.patch, 
> HBASE-12260.master.004.patch, HBASE-12260.master.005.patch, 
> HBASE-12260.master.006.patch, HBASE-12260.master.007.patch, 
> HBASE-12260.master.008.patch, HBASE-12260.master.009.patch, 
> HBASE-12260.master.010.patch, HBASE-12260.master.011.patch, 
> HBASE-12260.master.011.patch, HBASE-12260.master.012.patch, 
> HBASE-12260.master.013.patch, HBASE-12260.master.014.patch
>
>
> A major issue with MasterServices is the MasterCoprocessorEnvironment exposes 
> this class even though MasterServices is tagged with 
> @InterfaceAudience.Private
> This means that the entire internals of the HMaster is essentially part of 
> the coprocessor API.  Many of the classes returned by the MasterServices API 
> are highly internal, extremely powerful, and subject to constant change.  
> Perhaps a new API to replace MasterServices that is use-case focused, and 
> justified based on real world co-processors would suit things better.



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

Reply via email to