From: Andrew Kryczka Date: Tue, 4 Jun 2019 17:17:24 +0000 (-0700) Subject: Fix merging range tombstone covering put during flush/compaction (#5406) X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ad67a03c319dbc42d4cdb4f981d061bde70537a5;p=rocksdb.git Fix merging range tombstone covering put during flush/compaction (#5406) Summary: Flush/compaction use `MergeUntil` which has a special code path to handle a merge ending with a non-`Merge` point key. In particular if that key is a `Put` we forgot to check whether it is covered by a range tombstone. If it is covered then we must not include it in the following call to `TimedFullMerge`. Fixes #5392. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5406 Differential Revision: D15611144 Pulled By: sagar0 fbshipit-source-id: ba6a7863ca2d043f591de78fd0c4f4561f0c500e --- diff --git a/HISTORY.md b/HISTORY.md index b2791bee..33ba27d6 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -115,6 +115,10 @@ * Close a WAL file before another thread deletes it. * Fix an assertion failure `IsFlushPending() == true` caused by one bg thread releasing the db mutex in ~ColumnFamilyData and another thread clearing `flush_requested_` flag. +## 6.1.2 (6/4/2019) +### Bug Fixes +* Fix flush's/compaction's merge processing logic which allowed `Put`s covered by range tombstones to reappear. Note `Put`s may exist even if the user only ever called `Merge()` due to an internal conversion during compaction to the bottommost level. + ## 6.1.1 (4/9/2019) ### New Features * When reading from option file/string/map, customized comparators and/or merge operators can be filled according to object registry.