Details
-
Task
-
Resolution: Unresolved
-
Minor
-
None
Description
The begin seqno of a range lock (over a range of seqnos in the seqList) is currently updated every time an item is read. This is to minimize the amount of stale items created over the lifetime of the range lock - if an item is covered by a range lock, it cannot be updated by a front end op, it must be marked stale and a new stored value appended (because the old one is still needed for the reader holding the range lock). Once the begin seqno has passed the seqno of a particular stored value, front end ops can freely update the item. Stale items consume memory and are removed periodically once they are no longer covered by a range lock.
Updating the begin seqno requires a lock to be held. It may aid performance to only update the seqno every n items, e.g., every 100th read item.