Review Board 1.7.22


The put operation can release the rowlock before sync-ing the Hlog

Review Request #2141 - Created Oct. 2, 2011 and updated

Dhruba Borthakur
HBASE-4528
Reviewers
hbase
hbase
The changes the multiPut operation so that the sync to the wal occurs outside the rowlock.

This enhancement is done only to HRegion.mut(Put[]) because this is the only method that gets invoked from an application. The HRegion.put(Put) is used only by unit tests and should possibly be deprecated.
I ran TestLogRolling over and over again, about 50 times, not failed a single time.
Review request changed
Updated (Oct. 22, 2011, 3:55 p.m.)
Fixed two typos pointed out by Ted.

TimeRangeTracker is not updated because it is a heuristic that records the (min, max) of the timestamps of the kvs in the memstore. We cannot update it during the rollback because we do not know what the next min or max is without scanning all the existing keys in the memstore. From what I understand, the timeRangeTracker is essentially a heuristic, so it is ok to not update it in the rare case of a rollback.