[
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)