Dhruba Borthakur 9a357847eb Delete non-visible keys during a compaction even in the presense of snapshots.
Summary:
 LevelDB should delete almost-new keys when a long-open snapshot exists.
The previous behavior is to keep all versions that were created after the
oldest open snapshot. This can lead to database size bloat for
high-update workloads when there are long-open snapshots and long-open
snapshot will be used for logical backup. By "almost new" I mean that the
key was updated more than once after the oldest snapshot.

If there were two snapshots with seq numbers s1 and s2 (s1 < s2), and if
we find two instances of the same key k1 that lie entirely within s1 and
s2 (i.e. s1 < k1 < s2), then the earlier version
of k1 can be safely deleted because that version is not visible in any snapshot.

Test Plan:
unit test attached
make clean check

Differential Revision: https://reviews.facebook.net/D6999
2012-11-28 15:47:40 -08:00
..
2011-10-31 17:22:06 +00:00
2012-11-07 14:19:48 -08:00
2012-11-07 14:19:48 -08:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2012-09-16 19:33:43 -07:00
2012-04-17 08:36:46 -07:00
2012-09-06 17:52:08 -07:00
2012-09-06 17:52:08 -07:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00