[
https://issues.apache.org/jira/browse/HBASE-15600?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230034#comment-15230034
]
Rajeshbabu Chintaguntla commented on HBASE-15600:
-------------------------------------------------
[~anoop.hbase]
bq. So u mean write to memstore directly not via the Region -> Store ->
Memstore path.
I mean we can write to memstore accountable manner via Region -> Store ->
Memstore path.
bq. Within the CP hook (like preBatchMutate) we can get reference to Region and
can call the batch method on that? So u want that write should not do row
locking? Already the main row is locked by now and there is no chance another
thread locked this corresponding index row. So that is ok. So abt size checks?
It's not about row locks. Since mvcc cannot progress forward if we write
anything in the coprocessors with batchMutate API writes will be blocked.
Uploaded patch to add mutations minibatchOp which internally be written to
memstore via Store -> Memstore and will be rolledback if any failures in the
the middle.
> Add provision for adding mutations to memstore or able to write to same
> region in batchMutate coprocessor hooks
> ---------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-15600
> URL: https://issues.apache.org/jira/browse/HBASE-15600
> Project: HBase
> Issue Type: Improvement
> Reporter: Rajeshbabu Chintaguntla
> Assignee: Rajeshbabu Chintaguntla
> Fix For: 2.0.0, 0.98.19, 1.1.5, 1.2.2, 1.0.5
>
> Attachments: HBASE-15600.patch
>
>
> As part of PHOENIX-1734 we need to write the index updates to same region
> from coprocessors but writing from batchMutate API is not allowed because of
> mvcc.
> Raised PHOENIX-2742 to discuss any alternative way to write to the same
> region directly or not but not having any proper solution there.
> Currently we have provision to write wal edits from coprocessors. We can set
> wal edits in MiniBatchOperationInProgress.
> {noformat}
> /**
> * Sets the walEdit for the operation(Mutation) at the specified position.
> * @param index
> * @param walEdit
> */
> public void setWalEdit(int index, WALEdit walEdit) {
> this.walEditsFromCoprocessors[getAbsoluteIndex(index)] = walEdit;
> }
> {noformat}
> Similarly we can allow to write mutations from coprocessors to memstore as
> well. Or else we should provide the batch mutation API allow write in batch
> mutate coprocessors.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)