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