Harry Harpham created HBASE-15417:
-------------------------------------

             Summary: 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
            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.

 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to