[ 
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)

Reply via email to