diff options
author | Sara Golemon <sara.golemon@mongodb.com> | 2019-02-21 16:01:19 +0000 |
---|---|---|
committer | Sara Golemon <sara.golemon@mongodb.com> | 2019-02-22 20:07:50 +0000 |
commit | a6b27fa913809d886ae481a8a3af3a176910b3b0 (patch) | |
tree | 1fa2d0d0f78149944d5f5798f1ff0c9d921c0fe9 /src/mongo/db/storage/wiredtiger/wiredtiger_global_options.cpp | |
parent | 0ab7df179a7329fea4c28049d1ff532010720280 (diff) | |
download | mongo-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.cpp | 135 |
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 |