From: Siying Dong Date: Fri, 20 Jan 2017 18:43:59 +0000 (-0800) Subject: Fix OptimizeForPointLookup() X-Git-Tag: rocksdb-5.1.2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=53571a7a70145cbd2fc9e4f846174e1334b7bc50;p=rocksdb.git 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 --- diff --git a/db/db_test2.cc b/db/db_test2.cc index 8fdcfda2..ccbed049 100644 --- a/db/db_test2.cc +++ b/db/db_test2.cc @@ -2216,6 +2216,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 34df0ca8..839fc191 100644 --- a/util/options.cc +++ b/util/options.cc @@ -700,7 +700,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; }