[ 
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:07 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. It 
was also a bummer having to give MS and RSS over to the CP audience with all of 
its constraints giving up on the original intent of MS and RSS being a subset 
of HMaster or HRegionServer so we could mock, inject, etc. (See the dev list 
discussion on MS and RSS having two different clients with two different 
demands).  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, 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.

> 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