[ 
https://issues.apache.org/jira/browse/HBASE-16992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15630034#comment-15630034
 ] 

Enis Soztutar commented on HBASE-16992:
---------------------------------------

bq.  Does the returned mutation from coprocessor have the same row as the 
corresponded mutation? If so, the acquiredRowLocks() can be saved. If not, the 
corresponded mutation may maintain the cells with different row due to 
mergeFamilyMaps()
It can be the same rows or different rows as Anoop says. Phoenix local indexing 
already uses this for generating different rows. 

bq.  I feel we should enforce that the Mutations should have same Durability as 
that of the original Mutation
Agreed. I don't imagine a use case where a CP will generate mutations with a 
different durability than the original one. If the use case comes up later, we 
can definitely address that at that time. 

> The usage of mutation from CP is weird.
> ---------------------------------------
>
>                 Key: HBASE-16992
>                 URL: https://issues.apache.org/jira/browse/HBASE-16992
>             Project: HBase
>          Issue Type: Bug
>            Reporter: ChiaPing Tsai
>
> {code:title=HRegion#doMiniBatchMutate|borderStyle=solid}
> Mutation cpMutation = cpMutations[j];
> Map<byte[], List<Cell>> cpFamilyMap = cpMutation.getFamilyCellMap();
> checkAndPrepareMutation(cpMutation, replay, cpFamilyMap, now);
>  // Acquire row locks. If not, the whole batch will fail.
> acquiredRowLocks.add(getRowLockInternal(cpMutation.getRow(), true));
> if (cpMutation.getDurability() == Durability.SKIP_WAL) {
>   recordMutationWithoutWal(cpFamilyMap);
> }
> // Returned mutations from coprocessor correspond to the Mutation at index i. 
> We can
>  // directly add the cells from those mutations to the familyMaps of this 
> mutation.
> mergeFamilyMaps(familyMaps[i], cpFamilyMap); // will get added to the 
> memstore later
> {code}
> 1. Does the returned mutation from coprocessor have the same row as the 
> corresponded mutation? If so, the acquiredRowLocks() can be saved. If not, 
> the corresponded mutation may maintain the cells with different row due to 
> mergeFamilyMaps().
> 2. Is returned mutation's durability useful? If so, we should deal with the 
> different durabilities before mergeFamilyMaps(). If not, the 
> recordMutationWithoutWal can be saved. 
> 3. If both the returned mutation and corresponded mutation have 
> Durability.SKIP_WAL, the recordMutationWithoutWal() may record the duplicate 
> cells due to mergeFamilyMaps().
> Any comment? Thanks.



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

Reply via email to