summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-05-22 10:09:32 -0400
committerGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-05-22 22:18:41 -0400
commit2c4c991bb1eebfd47cd74b6fa91f202429eb3f14 (patch)
tree97f78b990720cf37e5c4c82377a8a95c5fb6a0e6
parent84bda45d3e50c164beebc83a1b44cc3f923bb62a (diff)
downloadmongo-2c4c991bb1eebfd47cd74b6fa91f202429eb3f14.tar.gz
SERVER-16018 Filter out unrelevant wiredTiger fields in server status
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp6
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp13
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util.h8
3 files changed, 25 insertions, 2 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp
index 7e0c18ecb5f..335aebd34a5 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp
@@ -66,8 +66,12 @@ BSONObj WiredTigerServerStatusSection::generateSection(OperationContext* opCtx,
invariant(s);
const string uri = "statistics:";
+ // Filter out unrelevant statistic fields.
+ std::vector<std::string> fieldsToIgnore = {"LSM"};
+
BSONObjBuilder bob;
- Status status = WiredTigerUtil::exportTableToBSON(s, uri, "statistics=(fast)", &bob);
+ Status status =
+ WiredTigerUtil::exportTableToBSON(s, uri, "statistics=(fast)", &bob, fieldsToIgnore);
if (!status.isOK()) {
bob.append("error", "unable to retrieve statistics");
bob.append("code", static_cast<int>(status.code()));
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
index 8bf7008b7aa..9e38db35291 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
@@ -602,6 +602,14 @@ Status WiredTigerUtil::exportTableToBSON(WT_SESSION* session,
const std::string& uri,
const std::string& config,
BSONObjBuilder* bob) {
+ return exportTableToBSON(session, uri, config, bob, {});
+}
+
+Status WiredTigerUtil::exportTableToBSON(WT_SESSION* session,
+ const std::string& uri,
+ const std::string& config,
+ BSONObjBuilder* bob,
+ const std::vector<std::string>& filter) {
invariant(session);
invariant(bob);
WT_CURSOR* c = NULL;
@@ -646,6 +654,11 @@ Status WiredTigerUtil::exportTableToBSON(WT_SESSION* session,
if (prefix.size() == 0) {
bob->appendNumber(desc, v);
} else {
+ bool shouldSkipField = std::find(filter.begin(), filter.end(), prefix) != filter.end();
+ if (shouldSkipField) {
+ continue;
+ }
+
BSONObjBuilder*& sub = subs[prefix.toString()];
if (!sub)
sub = new BSONObjBuilder();
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.h b/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
index 7f7d390f721..217c640cd4e 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
@@ -140,12 +140,18 @@ public:
/**
* Reads contents of table using URI and exports all keys to BSON as string elements.
- * Additional, adds 'uri' field to output document.
+ * Additional, adds 'uri' field to output document. A filter can be specified to skip desired
+ * fields.
*/
static Status exportTableToBSON(WT_SESSION* s,
const std::string& uri,
const std::string& config,
BSONObjBuilder* bob);
+ static Status exportTableToBSON(WT_SESSION* s,
+ const std::string& uri,
+ const std::string& config,
+ BSONObjBuilder* bob,
+ const std::vector<std::string>& filter);
/**
* Appends information about the storage engine's currently available snapshots and the settings