Does tupdatesLock prevent the hole you describe? Flushing must hold the updatesLock write lock to proceed. Updates take out a read lock on updatesLock. All updates will have gone into the WAL and into the memcache before the read lock is released.

St.Ack


Ning Li wrote:
Hi,

I want to confirm this before opening an JIRA issue.

An HRegion asks each HStore to flush its cache with a sequence number
X. The assumption is that all the updates before X will be flushed. So
during the startup reconstruction, the updates before X are skipped.

However, the implementation does not guarantee that all the updates
before X will be flushed when HStore flushes with X. This is because
HRegion uses write-ahead logging and X is the latest sequence number.
Some updates may not have been written to the cache which will be
flushed.

I'll open an JIRA issue once confirmed.

Ning

Reply via email to