Anoop Sam John created HBASE-11503:
--------------------------------------

             Summary: Inconsistency in CP between HRegion#batchMutate() and 
MultiRowMutation()
                 Key: HBASE-11503
                 URL: https://issues.apache.org/jira/browse/HBASE-11503
             Project: HBase
          Issue Type: Bug
          Components: Coprocessors, regionserver
            Reporter: Anoop Sam John
            Assignee: Anoop Sam John


>From users perspective both are almost same except in MultiRowMutation all 
>Mutations are applied in one transaction. So the call and behavior of CPs 
>during both of these execution should be consistent.  Now after HBASE-11423, 
>all hooks are getting called.
But in case of HRegion#batchMutate() when a prePut/Delete() call for one 
Mutation do a bypass, the actual Mutation we are not applying but will continue 
with other Mutations. But in case of MultiRowMutation, when prePut/Delete() 
call for one Mutation do a bypass, we just stop calling pre hooks for remaining 
Mutations but will end up applying those Mutations to Region.

{code}
public void preProcess(HRegion region, WALEdit walEdit) throws IOException {
    RegionCoprocessorHost coprocessorHost = region.getCoprocessorHost();
    if (coprocessorHost != null) {
      for (Mutation m : mutations) {
        if (m instanceof Put) {
          if (coprocessorHost.prePut((Put) m, walEdit, m.getDurability())) {
            // by pass everything
            return;
          }
        } else if (m instanceof Delete) {
          Delete d = (Delete) m;
          region.prepareDelete(d);
          if (coprocessorHost.preDelete(d, walEdit, d.getDurability())) {
            // by pass everything
            return;
          }
        }
      }
    }
}
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to