summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/wiredtiger')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp4
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_parameters.idl13
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util_test.cpp7
3 files changed, 23 insertions, 1 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
index 257e755c928..ac5f4362967 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
@@ -47,6 +47,7 @@
#include "mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h"
+#include <boost/algorithm/string/join.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/operations.hpp>
@@ -363,6 +364,9 @@ WiredTigerKVEngine::WiredTigerKVEngine(OperationContext* opCtx,
if (gWiredTigerEvictionDirtyTargetGB)
ss << "eviction_dirty_target="
<< static_cast<size_t>(gWiredTigerEvictionDirtyTargetGB * 1024) << "MB,";
+ if (!gWiredTigerExtraDiagnostics.empty())
+ ss << "extra_diagnostics=["
+ << boost::algorithm::join(gWiredTigerExtraDiagnostics, ",") << "],";
if (gWiredTigerEvictionDirtyMaxGB)
ss << "eviction_dirty_trigger=" << static_cast<size_t>(gWiredTigerEvictionDirtyMaxGB * 1024)
<< "MB,";
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_parameters.idl b/src/mongo/db/storage/wiredtiger/wiredtiger_parameters.idl
index 7a26b0190e5..c02771e1b5c 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_parameters.idl
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_parameters.idl
@@ -110,7 +110,7 @@ server_parameters:
cpp_vartype: 'double'
cpp_varname: gWiredTigerEvictionDirtyTargetGB
default: 0
- validator:
+ :
gte: 0.01
lte: 10000
@@ -150,6 +150,17 @@ server_parameters:
validator:
gte: 1
+ wiredTigerExtraDiagnostics:
+ description: >-
+ Extra diagnostics that can be enabled in release mode including diagnostic assertions that can cause WiredTiger to abort upon
+ detected invalid state. Valid options include: ["all", "concurrent_access", "data_validation", "invalid_op", "out_of_order",
+ "panic", "slow_operation", "visibility"]
+ set_at: [startup, runtime]
+ cpp_vartype: 'synchronized_value<std::vector<std::string>>'
+ cpp_varname: "gwiredTigerExtraDiagnostics"
+ validator:
+ callback: validateExtraDiagnostics
+
wiredTigerFileHandleCloseMinimum:
description: >-
The number of handles open before the WiredTiger file manager will look for handles to close.
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util_test.cpp
index 83851b4ba9b..515ca8bfe0e 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util_test.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util_test.cpp
@@ -146,6 +146,13 @@ private:
std::unique_ptr<OperationContext> _opCtx;
};
+TEST_F(WiredTigerUtilMetadataTest, GetMetadataCreateExtraDiagnostics) {
+ StatusWith<std::string> result =
+ WiredTigerUtil::getMetadataCreate(getOperationContext(), getURI());
+ ASSERT_NOT_OK(result.getStatus());
+ ASSERT_EQUALS(ErrorCodes::NoSuchKey, result.getStatus().code());
+}
+
TEST_F(WiredTigerUtilMetadataTest, GetMetadataCreateInvalid) {
StatusWith<std::string> result =
WiredTigerUtil::getMetadataCreate(getOperationContext(), getURI());