Make MemTableRepFactory into a Customizable class (#8419)
Summary: This PR does the following: -> Makes the MemTableRepFactory into a Customizable class and creatable/configurable via CreateFromString -> Makes the existing implementations compatible with configurations -> Moves the "SpecialRepFactory" test class into testutil, accessible via the ObjectRegistry or a NewSpecial API New tests were added to validate the functionality and all existing tests pass. db_bench and memtablerep_bench were hand-tested to verify the functionality in those tools. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8419 Reviewed By: zhichao-cao Differential Revision: D29558961 Pulled By: mrambacher fbshipit-source-id: 81b7229636e4e649a0c914e73ac7b0f8454c931cmain
parent
e40b04e9fa
commit
beed86473a
@ -1,49 +0,0 @@ |
||||
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under both the GPLv2 (found in the
|
||||
// COPYING file in the root directory) and Apache 2.0 License
|
||||
// (found in the LICENSE.Apache file in the root directory).
|
||||
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
||||
|
||||
#pragma once |
||||
#ifndef ROCKSDB_LITE |
||||
#include "rocksdb/slice_transform.h" |
||||
#include "rocksdb/memtablerep.h" |
||||
|
||||
namespace ROCKSDB_NAMESPACE { |
||||
|
||||
class HashLinkListRepFactory : public MemTableRepFactory { |
||||
public: |
||||
explicit HashLinkListRepFactory(size_t bucket_count, |
||||
uint32_t threshold_use_skiplist, |
||||
size_t huge_page_tlb_size, |
||||
int bucket_entries_logging_threshold, |
||||
bool if_log_bucket_dist_when_flash) |
||||
: bucket_count_(bucket_count), |
||||
threshold_use_skiplist_(threshold_use_skiplist), |
||||
huge_page_tlb_size_(huge_page_tlb_size), |
||||
bucket_entries_logging_threshold_(bucket_entries_logging_threshold), |
||||
if_log_bucket_dist_when_flash_(if_log_bucket_dist_when_flash) {} |
||||
|
||||
virtual ~HashLinkListRepFactory() {} |
||||
|
||||
using MemTableRepFactory::CreateMemTableRep; |
||||
virtual MemTableRep* CreateMemTableRep( |
||||
const MemTableRep::KeyComparator& compare, Allocator* allocator, |
||||
const SliceTransform* transform, Logger* logger) override; |
||||
|
||||
virtual const char* Name() const override { |
||||
return "HashLinkListRepFactory"; |
||||
} |
||||
|
||||
private: |
||||
const size_t bucket_count_; |
||||
const uint32_t threshold_use_skiplist_; |
||||
const size_t huge_page_tlb_size_; |
||||
int bucket_entries_logging_threshold_; |
||||
bool if_log_bucket_dist_when_flash_; |
||||
}; |
||||
|
||||
} // namespace ROCKSDB_NAMESPACE
|
||||
#endif // ROCKSDB_LITE
|
@ -1,44 +0,0 @@ |
||||
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under both the GPLv2 (found in the
|
||||
// COPYING file in the root directory) and Apache 2.0 License
|
||||
// (found in the LICENSE.Apache file in the root directory).
|
||||
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
||||
|
||||
#pragma once |
||||
#ifndef ROCKSDB_LITE |
||||
#include "rocksdb/slice_transform.h" |
||||
#include "rocksdb/memtablerep.h" |
||||
|
||||
namespace ROCKSDB_NAMESPACE { |
||||
|
||||
class HashSkipListRepFactory : public MemTableRepFactory { |
||||
public: |
||||
explicit HashSkipListRepFactory( |
||||
size_t bucket_count, |
||||
int32_t skiplist_height, |
||||
int32_t skiplist_branching_factor) |
||||
: bucket_count_(bucket_count), |
||||
skiplist_height_(skiplist_height), |
||||
skiplist_branching_factor_(skiplist_branching_factor) { } |
||||
|
||||
virtual ~HashSkipListRepFactory() {} |
||||
|
||||
using MemTableRepFactory::CreateMemTableRep; |
||||
virtual MemTableRep* CreateMemTableRep( |
||||
const MemTableRep::KeyComparator& compare, Allocator* allocator, |
||||
const SliceTransform* transform, Logger* logger) override; |
||||
|
||||
virtual const char* Name() const override { |
||||
return "HashSkipListRepFactory"; |
||||
} |
||||
|
||||
private: |
||||
const size_t bucket_count_; |
||||
const int32_t skiplist_height_; |
||||
const int32_t skiplist_branching_factor_; |
||||
}; |
||||
|
||||
} // namespace ROCKSDB_NAMESPACE
|
||||
#endif // ROCKSDB_LITE
|
Loading…
Reference in new issue