[
https://issues.apache.org/jira/browse/HBASE-18127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16877773#comment-16877773
]
Andrew Purtell commented on HBASE-18127:
----------------------------------------
I would advise use of thread locals. This is what I used when prototyping
WALkey decoration via mutation attribute extracted during RPC processing. It
works for the RPC observers because a single thread handles the Call end to end
from pick up from the queue through all coprocessor upcalls (even over multiple
installed coprocessors over multiple hooks).
However it will not work cross thread boundaries obviously. So you can’t use it
to carry state between a RegionObserver and WALobserver because the upcalls are
executed in different thread contexts, nor between upcalls from RPC and upcalls
from asynchronous handlers, because, again, different contexts. For the latter
case though you can use the map in the coprocessor environment assuming both
RPC and handler upcalls are processed by the same region observer instance.
> Enable state to be passed between the region observer coprocessor hook calls
> ----------------------------------------------------------------------------
>
> Key: HBASE-18127
> URL: https://issues.apache.org/jira/browse/HBASE-18127
> Project: HBase
> Issue Type: New Feature
> Reporter: Lars Hofhansl
> Assignee: Abhishek Singh Chouhan
> Priority: Major
> Attachments: HBASE-18127.master.001.patch,
> HBASE-18127.master.002.patch, HBASE-18127.master.002.patch,
> HBASE-18127.master.003.patch, HBASE-18127.master.004.patch,
> HBASE-18127.master.005.patch, HBASE-18127.master.005.patch,
> HBASE-18127.master.006.patch
>
>
> Allow regionobserver to optionally skip postPut/postDelete when
> postBatchMutate was called.
> Right now a RegionObserver can only statically implement one or the other. In
> scenarios where we need to work sometimes on the single postPut and
> postDelete hooks and sometimes on the batchMutate hooks, there is currently
> no place to convey this information to the single hooks. I.e. the work has
> been done in the batch, skip the single hooks.
> There are various solutions:
> 1. Allow some state to be passed _per operation_.
> 2. Remove the single hooks and always only call batch hooks (with a default
> wrapper for the single hooks).
> 3. more?
> [~apurtell], what we had discussed a few days back.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)