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