summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Stolley <colin.stolley@mongodb.com>2022-10-03 14:19:28 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-03 14:50:59 +0000
commitf0bed39dc1592a17a1dffba7164b320b40ed884d (patch)
treec2d6aadfc97ecfe16612b47166801c8a010d8934
parent37d637a8c97bb5eb8b4bc0afad4e10fbe7d50398 (diff)
downloadmongo-f0bed39dc1592a17a1dffba7164b320b40ed884d.tar.gz
SERVER-69949: appendCustomStats() for column store.
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_column_store.cpp7
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp36
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp42
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util.h5
4 files changed, 50 insertions, 40 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_column_store.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_column_store.cpp
index 9f0561911b8..25d4c623b14 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_column_store.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_column_store.cpp
@@ -446,14 +446,11 @@ Status WiredTigerColumnStore::compact(OperationContext* opCtx) {
// TODO: SERVER-65980.
uasserted(ErrorCodes::NotImplemented, "WiredTigerColumnStore::compact");
}
+
bool WiredTigerColumnStore::appendCustomStats(OperationContext* opCtx,
BSONObjBuilder* output,
double scale) const {
- // TODO: SERVER-65980.
- // For now we just skip this so that tests can successfully obtain collection-level stats on a
- // collection with a columnstore index.
- output->append("note"_sd, "columnstore stats are not yet implemented"_sd);
- return true;
+ return WiredTigerUtil::appendCustomStats(opCtx, output, scale, _uri);
}
} // namespace mongo
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
index ce6f7bb0a84..55455b95c66 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
@@ -375,41 +375,7 @@ void WiredTigerIndex::fullValidate(OperationContext* opCtx,
bool WiredTigerIndex::appendCustomStats(OperationContext* opCtx,
BSONObjBuilder* output,
double scale) const {
- dassert(opCtx->lockState()->isReadLocked());
- {
- BSONObjBuilder metadata(output->subobjStart("metadata"));
- Status status = WiredTigerUtil::getApplicationMetadata(opCtx, uri(), &metadata);
- if (!status.isOK()) {
- metadata.append("error", "unable to retrieve metadata");
- metadata.append("code", static_cast<int>(status.code()));
- metadata.append("reason", status.reason());
- }
- }
- std::string type, sourceURI;
- WiredTigerUtil::fetchTypeAndSourceURI(opCtx, _uri, &type, &sourceURI);
- StatusWith<std::string> metadataResult = WiredTigerUtil::getMetadataCreate(opCtx, sourceURI);
- StringData creationStringName("creationString");
- if (!metadataResult.isOK()) {
- BSONObjBuilder creationString(output->subobjStart(creationStringName));
- creationString.append("error", "unable to retrieve creation config");
- creationString.append("code", static_cast<int>(metadataResult.getStatus().code()));
- creationString.append("reason", metadataResult.getStatus().reason());
- } else {
- output->append(creationStringName, metadataResult.getValue());
- // Type can be "lsm" or "file"
- output->append("type", type);
- }
-
- WiredTigerSession* session = WiredTigerRecoveryUnit::get(opCtx)->getSession();
- WT_SESSION* s = session->getSession();
- Status status =
- WiredTigerUtil::exportTableToBSON(s, "statistics:" + uri(), "statistics=(fast)", output);
- if (!status.isOK()) {
- output->append("error", "unable to retrieve statistics");
- output->append("code", static_cast<int>(status.code()));
- output->append("reason", status.reason());
- }
- return true;
+ return WiredTigerUtil::appendCustomStats(opCtx, output, scale, _uri);
}
Status WiredTigerIndex::dupKeyCheck(OperationContext* opCtx, const KeyString::Value& key) {
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
index ab4623f5441..3da5ec9bcc0 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
@@ -561,6 +561,48 @@ size_t WiredTigerUtil::getCacheSizeMB(double requestedCacheSizeGB) {
return static_cast<size_t>(cacheSizeMB);
}
+bool WiredTigerUtil::appendCustomStats(OperationContext* opCtx,
+ BSONObjBuilder* output,
+ double scale,
+ const std::string& uri) {
+ dassert(opCtx->lockState()->isReadLocked());
+ {
+ BSONObjBuilder metadata(output->subobjStart("metadata"));
+ Status status = WiredTigerUtil::getApplicationMetadata(opCtx, uri, &metadata);
+ if (!status.isOK()) {
+ metadata.append("error", "unable to retrieve metadata");
+ metadata.append("code", static_cast<int>(status.code()));
+ metadata.append("reason", status.reason());
+ }
+ }
+ std::string type, sourceURI;
+ WiredTigerUtil::fetchTypeAndSourceURI(opCtx, uri, &type, &sourceURI);
+ StatusWith<std::string> metadataResult = WiredTigerUtil::getMetadataCreate(opCtx, sourceURI);
+ StringData creationStringName("creationString");
+ if (!metadataResult.isOK()) {
+ BSONObjBuilder creationString(output->subobjStart(creationStringName));
+ creationString.append("error", "unable to retrieve creation config");
+ creationString.append("code", static_cast<int>(metadataResult.getStatus().code()));
+ creationString.append("reason", metadataResult.getStatus().reason());
+ } else {
+ output->append(creationStringName, metadataResult.getValue());
+ // Type can be "lsm" or "file"
+ output->append("type", type);
+ }
+
+ WiredTigerSession* session = WiredTigerRecoveryUnit::get(opCtx)->getSession();
+ WT_SESSION* s = session->getSession();
+ Status status =
+ WiredTigerUtil::exportTableToBSON(s, "statistics:" + uri, "statistics=(fast)", output);
+ if (!status.isOK()) {
+ output->append("error", "unable to retrieve statistics");
+ output->append("code", static_cast<int>(status.code()));
+ output->append("reason", status.reason());
+ }
+ return true;
+}
+
+
logv2::LogSeverity getWTLOGV2SeverityLevel(const BSONObj& obj) {
const std::string field = "verbose_level_id";
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.h b/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
index b17dfcb6f85..a042ffd0681 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.h
@@ -276,6 +276,11 @@ public:
static int64_t getIdentSize(WT_SESSION* s, const std::string& uri);
+ static bool appendCustomStats(OperationContext* opCtx,
+ BSONObjBuilder* output,
+ double scale,
+ const std::string& uri);
+
/**
* Returns the bytes available for reuse for an ident. This is the amount of allocated space on
* disk that is not storing any data.