basho/bitcask — pull request #134 by slfritchie (2014-01-30 12:13:25+00:00)
Title: Slf tombstone management+sub second epochs

Just when I thought I was done last week with this branch-of-a-branch, PULSE found another problem.

* The 'epoch' subdivision of Bitcask timestamps: this fixes fold bugs where merge mutations can be seen by folding procs.

* The sibling->regular entry conversion sweeper helps reclaim memory by converting siblings back to single entries whenever mutations have happened during a fold and then the keydir is quiescent long enough to allow sweeping during get/put/remove operations. If a new fold starts in the middle of the sweep, the sweep stops and will resume when it's able to.

* Model corrections to avoid false positive reports. Until we get a temporal logic hacker skilled enough to build a real model, or fix the silly keydir frozen feature, I'm afraid that this is as good as I can do.

cc: @engelsanchez @evanmcc @jonmeredith @justinsheehy