From 6bca22522b7556a501697b654892dcda445d5cc5 Mon Sep 17 00:00:00 2001 From: Siying Dong Date: Fri, 20 Jan 2017 10:43:59 -0800 Subject: [PATCH] Fix OptimizeForPointLookup() Summary: If users directly call OptimizeForPointLookup(), it is broken as the option isn't compatible with parallel memtable insert. Fix it by using memtable bloomo filter instead. Closes https://github.com/facebook/rocksdb/pull/1791 Differential Revision: D4442836 Pulled By: siying fbshipit-source-id: bf6c9cd --- db/db_test2.cc | 12 ++++++++++++ util/options.cc | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/db/db_test2.cc b/db/db_test2.cc index e3148ef5c..55b30b0a7 100644 --- a/db/db_test2.cc +++ b/db/db_test2.cc @@ -2212,6 +2212,18 @@ TEST_F(DBTest2, ManualCompactionOverlapManualCompaction) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } + +TEST_F(DBTest2, OptimizeForPointLookup) { + Options options = CurrentOptions(); + Close(); + options.OptimizeForPointLookup(2); + ASSERT_OK(DB::Open(options, dbname_, &db_)); + + ASSERT_OK(Put("foo", "v1")); + ASSERT_EQ("v1", Get("foo")); + Flush(); + ASSERT_EQ("v1", Get("foo")); +} #endif // ROCKSDB_LITE } // namespace rocksdb diff --git a/util/options.cc b/util/options.cc index b4a6d36dc..72d283ed8 100644 --- a/util/options.cc +++ b/util/options.cc @@ -706,7 +706,7 @@ ColumnFamilyOptions* ColumnFamilyOptions::OptimizeForPointLookup( block_based_options.block_cache = NewLRUCache(static_cast(block_cache_size_mb * 1024 * 1024)); table_factory.reset(new BlockBasedTableFactory(block_based_options)); - memtable_factory.reset(NewHashLinkListRepFactory()); + memtable_prefix_bloom_size_ratio = 0.02; return this; }