[
https://issues.apache.org/jira/browse/HBASE-15071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15086729#comment-15086729
]
Heng Chen commented on HBASE-15071:
-----------------------------------
Currently, the usages of bypass in MasterCoprocessorHost:
* we ignore 'bypass' and comment it in JavaDoc, e.g.
preListSnapshot/deleteTable/truncateTable
* skip the default action and return something arbitrary. e.g.
deleteColumn/addColumn (it return -1, not a procedure id),
getNamespaces/listTableDescriptors (it return empty list)
* skip the default action and throw exception. e.g.
deleteNamespace/createNamespace/modifyNamespace
* skip default action and return nothing when caller has nothing to return.
e.g. preMove/
* skip the default action and return the coprocessor's returned value. e.g.
preBalanceSwitch (the implementation has some trick)
IMO 2,3 contravenes semantic of 'bypass', we could unify them firstly. As
[~stack] and [~mbertozzi] suggestion, some methods could just ignore 'bypass',
wdyt?
{quote}
There are others including the one where CP says bypass and then we return an
empty response when what is probably intended is that we somehow return a
response from CP's pre-call (only in most cases, there is no mechanism to do
so).
{quote}
And as [~stack] mentioned above, if we want keep the semantic of 'bypass', we
also need a mechanism to return pre-call response to client. This is the 5th
situation.
> Cleanup bypass semantic in MasterCoprocessorHost
> ------------------------------------------------
>
> Key: HBASE-15071
> URL: https://issues.apache.org/jira/browse/HBASE-15071
> Project: HBase
> Issue Type: Task
> Components: Coprocessors
> Affects Versions: 2.0.0
> Reporter: stack
> Priority: Blocker
>
> Lets decide on this one before we release 2.0.0.
> A bunch of methods in MasterCoprocessorHost on the 'pre' step allow returning
> true which indicates the method invocation is not to proceed.
> Not all 'pre' steps do this. Just some.
> Seems a little arbitrary.
> How we skip out if we are not proceed with the invocation is also a little
> arbitrary.
> When a deleteColumn call is supposed to skip out, it returns a -1, a
> non-procId. If we are to skip a balance call, we log that CP said skip and
> then return false to indicate the balancer did not run (why?). Elsewhere we
> just exit silently. In createNamespace we used to exit silently but
> HBASE-14888 just changed it so we throw a BypassCoprocessorException
> instead...
> Lets make them all work the same way.
> (This issue comes of chat w/ Matteo)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)