Summary: This patch introduces OptionsSanityCheckLevel internally to enable sanity check rocksdb options. Utilities API will be added in the follow-up diffs. Test Plan: Added more tests in options_test Reviewers: igor, IslamAbdelRahman, sdong, anthony Reviewed By: anthony Subscribers: dhruba, leveldb Differential Revision: https://reviews.facebook.net/D49515main
parent
dba5e00741
commit
183cadfc87
@ -0,0 +1,38 @@ |
||||
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under the BSD-style license found in the
|
||||
// LICENSE file in the root directory of this source tree. An additional grant
|
||||
// of patent rights can be found in the PATENTS file in the same directory.
|
||||
|
||||
#ifndef ROCKSDB_LITE |
||||
|
||||
#include "util/options_sanity_check.h" |
||||
|
||||
namespace rocksdb { |
||||
|
||||
namespace { |
||||
OptionsSanityCheckLevel SanityCheckLevelHelper( |
||||
const std::unordered_map<std::string, OptionsSanityCheckLevel>& smap, |
||||
const std::string& name) { |
||||
auto iter = smap.find(name); |
||||
return iter != smap.end() ? iter->second : kSanityLevelExactMatch; |
||||
} |
||||
} |
||||
|
||||
OptionsSanityCheckLevel DBOptionSanityCheckLevel( |
||||
const std::string& option_name) { |
||||
return SanityCheckLevelHelper(sanity_level_db_options, option_name); |
||||
} |
||||
|
||||
OptionsSanityCheckLevel CFOptionSanityCheckLevel( |
||||
const std::string& option_name) { |
||||
return SanityCheckLevelHelper(sanity_level_cf_options, option_name); |
||||
} |
||||
|
||||
OptionsSanityCheckLevel BBTOptionSanityCheckLevel( |
||||
const std::string& option_name) { |
||||
return SanityCheckLevelHelper(sanity_level_bbt_options, option_name); |
||||
} |
||||
|
||||
} // namespace rocksdb
|
||||
|
||||
#endif // !ROCKSDB_LITE
|
@ -0,0 +1,49 @@ |
||||
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under the BSD-style license found in the
|
||||
// LICENSE file in the root directory of this source tree. An additional grant
|
||||
// of patent rights can be found in the PATENTS file in the same directory.
|
||||
|
||||
#pragma once |
||||
|
||||
#include <string> |
||||
#include <unordered_map> |
||||
|
||||
#ifndef ROCKSDB_LITE |
||||
namespace rocksdb { |
||||
// This enum defines the RocksDB options sanity level.
|
||||
enum OptionsSanityCheckLevel : unsigned char { |
||||
// Performs no sanity check at all.
|
||||
kSanityLevelNone = 0x00, |
||||
// Performs minimum check to ensure the RocksDB instance can be
|
||||
// opened without corrupting / mis-interpreting the data.
|
||||
kSanityLevelLooselyCompatible = 0x01, |
||||
// Perform exact match sanity check.
|
||||
kSanityLevelExactMatch = 0xFF, |
||||
}; |
||||
|
||||
// The sanity check level for DB options
|
||||
static const std::unordered_map<std::string, OptionsSanityCheckLevel> |
||||
sanity_level_db_options = {}; |
||||
|
||||
// The sanity check level for column-family options
|
||||
static const std::unordered_map<std::string, OptionsSanityCheckLevel> |
||||
sanity_level_cf_options = { |
||||
{"comparator", kSanityLevelLooselyCompatible}, |
||||
{"prefix_extractor", kSanityLevelLooselyCompatible}, |
||||
{"table_factory", kSanityLevelLooselyCompatible}, |
||||
{"merge_operator", kSanityLevelLooselyCompatible}}; |
||||
|
||||
// The sanity check level for block-based table options
|
||||
static const std::unordered_map<std::string, OptionsSanityCheckLevel> |
||||
sanity_level_bbt_options = {}; |
||||
|
||||
OptionsSanityCheckLevel DBOptionSanityCheckLevel( |
||||
const std::string& options_name); |
||||
OptionsSanityCheckLevel CFOptionSanityCheckLevel( |
||||
const std::string& options_name); |
||||
OptionsSanityCheckLevel BBTOptionSanityCheckLevel( |
||||
const std::string& options_name); |
||||
|
||||
} // namespace rocksdb
|
||||
|
||||
#endif // !ROCKSDB_LITE
|
Loading…
Reference in new issue