summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2019-02-21 16:01:19 +0000
committerSara Golemon <sara.golemon@mongodb.com>2019-02-22 20:07:50 +0000
commita6b27fa913809d886ae481a8a3af3a176910b3b0 (patch)
tree1fa2d0d0f78149944d5f5798f1ff0c9d921c0fe9 /src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp
parent0ab7df179a7329fea4c28049d1ff532010720280 (diff)
downloadmongo-a6b27fa913809d886ae481a8a3af3a176910b3b0.tar.gz
SERVER-39716 Convert WiredTiger config options to IDL
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp135
1 files changed, 23 insertions, 112 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp
index e4661994431..63424bf4844 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp
@@ -31,140 +31,51 @@
#include "mongo/platform/basic.h"
-#include "mongo/base/status.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_global_options.h"
-#include "mongo/db/storage/wiredtiger/wiredtiger_record_store.h"
+
#include "mongo/util/log.h"
-#include "mongo/util/options_parser/constraints.h"
+
+namespace moe = mongo::optionenvironment;
namespace mongo {
WiredTigerGlobalOptions wiredTigerGlobalOptions;
-Status WiredTigerGlobalOptions::add(moe::OptionSection* options) {
- moe::OptionSection wiredTigerOptions("WiredTiger options");
-
- // WiredTiger storage engine options
- wiredTigerOptions.addOptionChaining("storage.wiredTiger.engineConfig.cacheSizeGB",
- "wiredTigerCacheSizeGB",
- moe::Double,
- "maximum amount of memory to allocate for cache; "
- "defaults to 1/2 of physical RAM");
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.engineConfig.statisticsLogDelaySecs",
- "wiredTigerStatisticsLogDelaySecs",
- moe::Int,
- "seconds to wait between each write to a statistics file in the dbpath; "
- "0 means do not log statistics")
- // FTDC supercedes WiredTiger's statistics logging.
- .hidden()
- .validRange(0, 100000)
- .setDefault(moe::Value(0));
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.engineConfig.journalCompressor",
- "wiredTigerJournalCompressor",
- moe::String,
- "use a compressor for log records [none|snappy|zlib|zstd]")
- .format("(:?none)|(:?snappy)|(:?zlib)|(:?zstd)", "(none/snappy/zlib/zstd)")
- .setDefault(moe::Value(std::string("snappy")));
- wiredTigerOptions.addOptionChaining("storage.wiredTiger.engineConfig.directoryForIndexes",
- "wiredTigerDirectoryForIndexes",
- moe::Switch,
- "Put indexes and data in different directories");
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.engineConfig.configString",
- "wiredTigerEngineConfigString",
- moe::String,
- "WiredTiger storage engine custom "
- "configuration settings")
- .hidden();
-
- // WiredTiger collection options
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.collectionConfig.blockCompressor",
- "wiredTigerCollectionBlockCompressor",
- moe::String,
- "block compression algorithm for collection data "
- "[none|snappy|zlib|zstd]")
- .format("(:?none)|(:?snappy)|(:?zlib)|(?:zstd)", "(none/snappy/zlib/zstd)")
- .setDefault(moe::Value(std::string("snappy")));
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.collectionConfig.configString",
- "wiredTigerCollectionConfigString",
- moe::String,
- "WiredTiger custom collection configuration settings")
- .hidden();
-
-
- // WiredTiger index options
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.indexConfig.prefixCompression",
- "wiredTigerIndexPrefixCompression",
- moe::Bool,
- "use prefix compression on row-store leaf pages")
- .setDefault(moe::Value(true));
- wiredTigerOptions
- .addOptionChaining("storage.wiredTiger.indexConfig.configString",
- "wiredTigerIndexConfigString",
- moe::String,
- "WiredTiger custom index configuration settings")
- .hidden();
-
- return options->addSection(wiredTigerOptions);
-}
-
-Status WiredTigerGlobalOptions::store(const moe::Environment& params,
- const std::vector<std::string>& args) {
+Status WiredTigerGlobalOptions::store(const moe::Environment& params) {
// WiredTiger storage engine options
- if (params.count("storage.wiredTiger.engineConfig.cacheSizeGB")) {
- wiredTigerGlobalOptions.cacheSizeGB =
- params["storage.wiredTiger.engineConfig.cacheSizeGB"].as<double>();
- }
if (params.count("storage.syncPeriodSecs")) {
wiredTigerGlobalOptions.checkpointDelaySecs =
static_cast<size_t>(params["storage.syncPeriodSecs"].as<double>());
}
- if (params.count("storage.wiredTiger.engineConfig.statisticsLogDelaySecs")) {
- wiredTigerGlobalOptions.statisticsLogDelaySecs =
- params["storage.wiredTiger.engineConfig.statisticsLogDelaySecs"].as<int>();
- }
- if (params.count("storage.wiredTiger.engineConfig.journalCompressor")) {
- wiredTigerGlobalOptions.journalCompressor =
- params["storage.wiredTiger.engineConfig.journalCompressor"].as<std::string>();
- }
- if (params.count("storage.wiredTiger.engineConfig.directoryForIndexes")) {
- wiredTigerGlobalOptions.directoryForIndexes =
- params["storage.wiredTiger.engineConfig.directoryForIndexes"].as<bool>();
- }
- if (params.count("storage.wiredTiger.engineConfig.configString")) {
- wiredTigerGlobalOptions.engineConfig =
- params["storage.wiredTiger.engineConfig.configString"].as<std::string>();
+
+ if (!wiredTigerGlobalOptions.engineConfig.empty()) {
log() << "Engine custom option: " << wiredTigerGlobalOptions.engineConfig;
}
- // WiredTiger collection options
- if (params.count("storage.wiredTiger.collectionConfig.blockCompressor")) {
- wiredTigerGlobalOptions.collectionBlockCompressor =
- params["storage.wiredTiger.collectionConfig.blockCompressor"].as<std::string>();
- }
- if (params.count("storage.wiredTiger.collectionConfig.configString")) {
- wiredTigerGlobalOptions.collectionConfig =
- params["storage.wiredTiger.collectionConfig.configString"].as<std::string>();
+ if (!wiredTigerGlobalOptions.collectionConfig.empty()) {
log() << "Collection custom option: " << wiredTigerGlobalOptions.collectionConfig;
}
- // WiredTiger index options
- if (params.count("storage.wiredTiger.indexConfig.prefixCompression")) {
- wiredTigerGlobalOptions.useIndexPrefixCompression =
- params["storage.wiredTiger.indexConfig.prefixCompression"].as<bool>();
- }
- if (params.count("storage.wiredTiger.indexConfig.configString")) {
- wiredTigerGlobalOptions.indexConfig =
- params["storage.wiredTiger.indexConfig.configString"].as<std::string>();
+ if (!wiredTigerGlobalOptions.indexConfig.empty()) {
log() << "Index custom option: " << wiredTigerGlobalOptions.indexConfig;
}
return Status::OK();
}
+Status WiredTigerGlobalOptions::validateWiredTigerCompressor(const std::string& value) {
+ constexpr auto kNone = "none"_sd;
+ constexpr auto kSnappy = "snappy"_sd;
+ constexpr auto kZlib = "zlib"_sd;
+ constexpr auto kZstd = "zstd"_sd;
+
+ if (!kNone.equalCaseInsensitive(value) && !kSnappy.equalCaseInsensitive(value) &&
+ !kZlib.equalCaseInsensitive(value) && !kZstd.equalCaseInsensitive(value)) {
+ return {ErrorCodes::BadValue,
+ "Compression option must be one of: 'none', 'snappy', 'zlib', or 'zstd'"};
+ }
+
+ return Status::OK();
+}
+
} // namespace mongo