[
https://issues.apache.org/jira/browse/HBASE-4528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13123404#comment-13123404
]
dhruba borthakur commented on HBASE-4528:
-----------------------------------------
It appears to me that deleting kvs from the memstore (as part of the
transaction rollback) should be ok. It is done without the rowlock because the
kvs are not yet visible to scanners because the rwcc is not yet advanced.
One doubtful case is when a thread A is trying to insert kv via a Put call.
Thread A inserted into memstore but has failed to sync to wal. Now suppose
another thread B has concurrently inserted exactly the same kv into the
memstore successfully and committed the transaction by syncing to wal
successfully. Now thread A tries to rollback its failed transaction and removes
the kv from the memstore. Is this scenario possible? In that case, should the
rollback code in Thread A delete the kv from the memstore only if its
kv.memstoreTS matches its own?
> The put operation can release the rowlock before sync-ing the Hlog
> ------------------------------------------------------------------
>
> Key: HBASE-4528
> URL: https://issues.apache.org/jira/browse/HBASE-4528
> Project: HBase
> Issue Type: Improvement
> Components: regionserver
> Reporter: dhruba borthakur
> Assignee: dhruba borthakur
> Attachments: appendNoSyncPut1.txt, appendNoSyncPut2.txt,
> appendNoSyncPut3.txt, appendNoSyncPut4.txt
>
>
> This allows for better throughput when there are hot rows. A single row
> update improves from 100 puts/sec/server to 5000 puts/sec/server.
--
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