Ticket #372 (closed defect: fixed)
RWStore does not prune the CommitRecordIndex
| Reported by: | thompsonbry | Owned by: | martyncutcher |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | RWStore | Version: | TERMS_REFACTOR_BRANCH |
| Keywords: | Cc: | martyncutcher, thompsonbry |
Description (last modified by thompsonbry) (diff)
The RWStore does not prune the head of the CommitRecordIndex? as commit points are released. It also might be failing to remove the CommitRecord? and logged root block for those historical commits.
Deleting the old CommitRecordIndex? records is somewhat tricky as the commit record index is only modified during the commit protocol. The deletes on the CommitRecordIndex? occur after we have already checkpointed the deferred free blocks for the commit. In order to break this recursion, the deleted records for the commit record index need a special logging structure, or perhaps simple a 2nd deferred free block checkpoint. "Immediate" delete of those data is not safe since that would make it impossible to restore an old root block and then roll the state of the database forward from there.
See https://sourceforge.net/apps/trac/bigdata/ticket/290 (RWStore (and scale-out data service) should indicate the earliest available commit point.)
See https://sourceforge.net/apps/trac/bigdata/ticket/375 (Persistent memory leaks (RWStore/DISK))