[
https://issues.apache.org/jira/browse/HBASE-5542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13226474#comment-13226474
]
Scott Chen commented on HBASE-5542:
-----------------------------------
@Lars: It seems to me that the major difference in doMiniBatchPut is that it
gets the locks with non-block option and process the locked rows. It remembers
a index of processed row and keeps continuing.
How about making MultiRowProcessor having an atomic option?
{code}
interface MultiRowProcessor {
boolean isAtomic();
Collection<byte[]> rowsToLock();
// need to tell processor which rows to process in the non-atomic mode
process(Collection<byte[]> rowsLocked);
}
{code}
In HRegion, we check if the processor is atomic.
If it is not, we get as many lock as possible and process them in a loop.
{code}
HRegion.processRowsWithLocks(MultiRowProcessor processor) {
while (done) {
if (processor.isAtomic()) {
// get all locks with blocking option
} else {
// get as many locks with non-blocking option
}
processor.process(lockedRows);
if (/*we process all the rows*/) {
done = true;
}
}
}
{code}
What do you think?
> Unify HRegion.mutateRowsWithLocks() and HRegion.processRow()
> ------------------------------------------------------------
>
> Key: HBASE-5542
> URL: https://issues.apache.org/jira/browse/HBASE-5542
> Project: HBase
> Issue Type: Improvement
> Reporter: Scott Chen
> Assignee: Scott Chen
> Fix For: 0.96.0
>
> Attachments: HBASE-5542.D2217.1.patch, HBASE-5542.D2217.2.patch,
> HBASE-5542.D2217.3.patch
>
>
> mutateRowsWithLocks() does atomic mutations on multiple rows.
> processRow() does atomic read-modify-writes on a single row.
> It will be useful to generalize both and have a
> processRowsWithLocks() that does atomic read-modify-writes on multiple rows.
> This also helps reduce some redundancy in the codes.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira