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