[
https://issues.apache.org/jira/browse/HBASE-25975?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17373808#comment-17373808
]
Andrew Kyle Purtell edited comment on HBASE-25975 at 7/2/21, 10:16 PM:
-----------------------------------------------------------------------
Approaching time for review. Ensuring unit tests are clean. Updated/attached
microbenchmarks to correspond to the current code.
results_baseline.txt are microbenchmarks results with the row commit sequencer
disabled.
results.txt are microbenchmarks results with the row commit sequencer enabled.
jmh.txt are results and profiling using JMH to measure just the overhead and
activity of the new row commit sequencer code paths.
was (Author: apurtell):
Approaching time for review. Ensuring unit tests are clean. Updated/attached
microbenchmarks to correspond to the current code.
> Row commit sequencer
> --------------------
>
> Key: HBASE-25975
> URL: https://issues.apache.org/jira/browse/HBASE-25975
> Project: HBase
> Issue Type: Sub-task
> Components: regionserver
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Major
> Fix For: 2.5.0, 3.0.0-alpha-2
>
> Attachments: jmh.txt, results.txt, results_baseline.txt
>
>
> Use a row commit sequencer in HRegion to ensure that only the operations that
> mutate disjoint sets of rows are able to commit within the same clock tick.
> This maintains the invariant that more than one mutation to a given row will
> never be committed in the same clock tick.
> Callers will first acquire row locks for the row(s) the pending mutation will
> mutate. Then they will use RowCommitSequencer.getRowSequence to ensure that
> the set of rows about to be mutated do not overlap with those for any other
> pending mutations in the current clock tick. If an overlap is identified,
> getRowSequence will yield and loop until there is no longer an overlap and
> the caller's pending mutation can succeed.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)