[
https://issues.apache.org/jira/browse/HBASE-18770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-18770:
--------------------------
Release Note:
Removes blanket bypass mechanism (Observer#bypass). Instead, a curated ubset of
methods are bypassable.
Changes Coprocessor ObserverContext 'bypass' semantic. We flip the
default so bypass is NOT supported on Observer invocations; only a
couple of preXXX methods in RegionObserver allow it: e.g. preGet
and prePut but not preFlush, etc. Everywhere else, we throw
a Exception if a Coprocessor Observer tries to invoke bypass. Master
Observers can no longer stop or change move, split, assign, create table,
etc.
preBatchMutate can no longer be bypassed (bypass the finer-grained
prePut, preDelete, etc. instead)
Ditto on complete, the mechanism that allowed a Coprocessor
rule that all subsequent Coprocessors are skipped in an
invocation chain; now, complete is only available to
bypassable methods (and Coprocessors will get an exception if
they try to 'complete' when it is not allowed).
See javadoc for whether a Coprocessor Observer method supports
'bypass'. If no mention, 'bypass' is NOT supported.
The below methods have been marked deprecated in hbase2. We would have liked to
have removed them because they use IA.Private parameters but they are in use by
CoreCoprocessors or are critical to downstreamers and we have no alternatives
to provide currently.
@Deprecated public boolean prePrepareTimeStampForDeleteVersion(final Mutation
mutation, final Cell kv, final byte[] byteNow, final Get get) throws
IOException {
@Deprecated public boolean preWALRestore(final RegionInfo info, final WALKey
logKey, final WALEdit logEdit) throws IOException {
@Deprecated public void postWALRestore(final RegionInfo info, final WALKey
logKey, final WALEdit logEdit) throws IOException {
@Deprecated public DeleteTracker postInstantiateDeleteTracker(DeleteTracker
result) throws IOException
was:
Removes blanket bypass mechanism (Observer#bypass). Instead, a curated ubset of
methods are bypassable.
Changes Coprocessor ObserverContext 'bypass' semantic. We flip the
default so bypass is NOT supported on Observer invocations; only a
couple of preXXX methods in RegionObserver allow it: e.g. preGet
and prePut but not preFlush, etc. Everywhere else, we throw
a Exception if a Coprocessor Observer tries to invoke bypass. Master
Observers can no longer stop or change move, split, assign, create table,
etc.
preBatchMutate can no longer be bypassed (bypass the finer-grained
prePut, preDelete, etc. instead)
Ditto on complete, the mechanism that allowed a Coprocessor
rule that all subsequent Coprocessors are skipped in an
invocation chain; now, complete is only available to
bypassable methods (and Coprocessors will get an exception if
they try to 'complete' when it is not allowed).
See javadoc for whether a Coprocessor Observer method supports
'bypass'. If no mention, 'bypass' is NOT supported.
> Remove bypass method in ObserverContext and implement the 'bypass' logic case
> by case
> -------------------------------------------------------------------------------------
>
> Key: HBASE-18770
> URL: https://issues.apache.org/jira/browse/HBASE-18770
> Project: HBase
> Issue Type: Sub-task
> Components: Coprocessors
> Reporter: Duo Zhang
> Assignee: stack
> Priority: Critical
> Fix For: 2.0.0-alpha-4
>
> Attachments: HBASE-18770.master.001.patch,
> HBASE-18770.master.002.patch, HBASE-18770.master.003.patch,
> HBASE-18770.master.004.patch, HBASE-18770.master.005.patch,
> HBASE-18770.master.006.patch, HBASE-18770.master.007.patch,
> HBASE-18770.master.008.patch, HBASE-18770.master.009.patch,
> HBASE-18770.master.010.patch
>
>
> http://search-hadoop.com/m/HBase/YGbbXd0RDCIHSC1
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)