hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Todd Lipcon (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-2957) Release row lock when waiting for wal-sync
Date Tue, 07 Sep 2010 17:33:37 GMT

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

Todd Lipcon commented on HBASE-2957:

A simple way to do that will be to attach a log-sync-number with every cell. When a cell is
updated it will keep the next log-sync-number within itself. A get will not return until the
current log-sync-number is at least as big as log-sync-number stored in the cell.

An update can return immediately after queuing the sync. The "wait-for-sync" is transferred
from the writer to the reader. If the reader comes in sufficiently late (which is likely)
then there will be no wait-for-syncs in the system.

We actually already do this! Rather than using the log-sync number, the memstore has an internal
timestamp for readability. When we scan a row, we record this number atomically and only return
cell versions older than this timestamp. See the ReadWriteConsistencyControl class.

The only change we have to make is that we unlock the row before we call sync and update the
memstore TS, rather than after.

> Release row lock when waiting for wal-sync
> ------------------------------------------
>                 Key: HBASE-2957
>                 URL: https://issues.apache.org/jira/browse/HBASE-2957
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver, wal
>    Affects Versions: 0.20.0
>            Reporter: Prakash Khemani
> Is there a reason to hold on to the row-lock while waiting for the WAL-sync to be completed
by the logSyncer thread?
> I think data consistency will be guaranteed even if the following happens (a) the row
lock is held while the row is updated in memory (b) the row lock is released after queuing
the KV record for WAL-syncing (c) the log-sync system guarantees that the log records for
any given row are synced in order (d) the HBase client only receives a success notification
after the sync completes (no change from the current state)
> I think this should be a huge win. For my use case, and I am sure for others,  the handler
thread spends the bulk of its row-lock critical section  time waiting for sync to complete.
> Even if the log-sync system cannot guarantee the orderly completion of sync records,
the "Don't hold row lock while waiting for sync" option should be available to HBase clients
on a per request basis.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message