[
https://issues.apache.org/jira/browse/HBASE-19007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16204766#comment-16204766
]
stack commented on HBASE-19007:
-------------------------------
bq. Means the CP required things in RS side like getConnection() will be added
to RegionServerCoprocessorEnvironment ?
To satisfy need for getConnection, getConfiguration, isStopping, etc., we would
do s/getRegionServices/getServer/ in RegionServerCoprocessorEnvironment and
ditton in MasterCoprocessorEnvironment, we'd s/getMasterServices/getServer. The
call to getServer would return the Server Interface. Server Interface would
look mostly like the below:
{code}
// This Interface shines through MasterServices and RegionServerServices. They
subclass it.
// Be careful what you add here. Make sure it ok for CPs to have access else
add elsewhere.
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
public interface Server extends Abortable, Stoppable {
Configuration getConfiguration();
ZooKeeperWatcher getZooKeeper();
Connection getConnection();
ServerName getServerName();
ChoreService getChoreService();
}
{code}
i.e. it would be changed to be IA.LP. The methods would be basically what is in
the above with some minor edit.
So, if you need to make a connection in your CP, you'd do
env.getServer().getConnection(), etc.
bq. But CPRSS now extend ImmutableOnlineRegions also and functions there will
be needed by RS side hooks (Region level or RS level hooks)
We can 1st list down what all needed at MS level, RS level, Region level and
WAL level.
We'd remove CPRSSS. Anything not available in Server, we'd instead make
availalble as a method on RegionServerCoprocessorEnvironment.
bq, I have a concern. This means we expose the APIs from Abortable and
Stoppable which include calls to abort() and stop.
This is valid. Server therefore needs an edit so it only exposes read-only
aspects of Stoppable/Abortable.
bq. I checked Phoenix code, they seem to call this in 2 or 3 places !! What a
CP instead should do is throw some IOE from CP hook and make the config
'hbase.coprocessor.abortonerror' as true. (This is any way by def true only).
Same with Stoppable also.
Agree. Do we have to add an CoprocessorAbortException for CPs to throw?
Let me redo the Master-side patch in accordance w/ this proposal. I'll edit
Server so it only exposes read-only methods. Thanks [~anoop.hbase]
> Align Services Interfaces in Master and RegionServer
> ----------------------------------------------------
>
> Key: HBASE-19007
> URL: https://issues.apache.org/jira/browse/HBASE-19007
> Project: HBase
> Issue Type: Task
> Reporter: stack
> Priority: Blocker
>
> HBASE-18183 adds a CoprocessorRegionServerService to give a view on
> RegionServiceServices that is safe to expose to Coprocessors.
> On the Master-side, MasterServices becomes an Interface for exposing to
> Coprocessors.
> We need to align the two.
> For background, see
> https://issues.apache.org/jira/browse/HBASE-12260?focusedCommentId=16203820&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16203820
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)