[
https://issues.apache.org/jira/browse/HBASE-15417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15185768#comment-15185768
]
Harry Harpham commented on HBASE-15417:
---------------------------------------
I see. However, I don't believe that is the behavior I saw. In a batch with 4
puts, I called bypass on 3 of them, including the very first put in the batch.
All 4 puts made it to the postPut hook. If I understood your description
correctly, none of them should have resulted in a postPut call. Is that
correct?
Also would you mind pointing me to documentation on bypass being a
per-operation setting. I'm only asking because when I first noticed this
behavior, I tried to dig around and see what the correct behavior was, but I
had trouble finding anything definitive. It would be nice to know where to
look for stuff like this in the future.
Lastly, I just want to say again that I haven't had a chance to test this
against a cluster, so it is possible that this is a bug in the
HBaseTestingUtility (if there is any difference in how the testing utility
would handle this scenario).
> Calls to ObserverContext#bypass in a region observer's prePut method are
> inconsistent
> -------------------------------------------------------------------------------------
>
> Key: HBASE-15417
> URL: https://issues.apache.org/jira/browse/HBASE-15417
> Project: HBase
> Issue Type: Bug
> Components: Coprocessors
> Reporter: Harry Harpham
> Priority: Minor
>
> Calling ctx.bypass(), where ctx is the ObserverContext object passed in to
> the region observer's prePut method, results in some inconsistent behavior.
> If every other put in the batch is also bypassed, the region observer sees
> none of these in its postPut method. If there is at least one other put
> which is not bypassed, the region observer sees all of the puts in the batch
> _including those which were bypassed_.
> The end result is that, after bypassing a put, that put may or may not end up
> in the region observer's postPut method. This behavior is dependent solely
> on which other puts the bypassed put is batched together with.
> I tried to find existing tickets for this issue, but was unable to.
> Apologies if I missed something. The closest issues I could find were
> HBASE-4331 and HBASE-11503, but those didn't seem to quite hit it.
> Additionally, I threw together a quick demonstration of this issue:
> https://github.com/hwh33/bypass-inconsistency-demo. You can run that demo in
> memory using the testing utility or against a running cluster. I actually
> haven't had time to test it against a cluster though, so you may encounter
> bugs if running in that mode (but hopefully not!).
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)