diff options
author | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-05-22 10:09:32 -0400 |
---|---|---|
committer | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-05-22 22:18:41 -0400 |
commit | 2c4c991bb1eebfd47cd74b6fa91f202429eb3f14 (patch) | |
tree | 97f78b990720cf37e5c4c82377a8a95c5fb6a0e6 | |
parent | 84bda45d3e50c164beebc83a1b44cc3f923bb62a (diff) | |
download | mongo-2c4c991bb1eebfd47cd74b6fa91f202429eb3f14.tar.gz |
SERVER-16018 Filter out unrelevant wiredTiger fields in server status
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_server_status.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 13 | ||||
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_util.h | 8 |
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 |