summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2017-08-15 12:58:30 -0400
committerHenrik Edin <henrik.edin@mongodb.com>2017-09-08 12:15:32 -0400
commit25e560be06f808b155d5ee372e3474ff24266cb2 (patch)
tree4253e8d83c2d16326aee8197201c4bdf278f0886 /src/mongo/db
parent2197cedd9cc61cba6ceb81affc348d3e3932c1b8 (diff)
downloadmongo-25e560be06f808b155d5ee372e3474ff24266cb2.tar.gz
SERVER-30759 Implement disk utilization stats for 'dbStats' command. Reports total and used space on the filesystem dbpath is mounted on. Respects --directoryperdb.
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/catalog/database_impl.cpp19
-rw-r--r--src/mongo/db/commands/dbcommands.cpp4
2 files changed, 23 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/database_impl.cpp b/src/mongo/db/catalog/database_impl.cpp
index 22cf455fd66..d57e4352b90 100644
--- a/src/mongo/db/catalog/database_impl.cpp
+++ b/src/mongo/db/catalog/database_impl.cpp
@@ -406,6 +406,25 @@ void DatabaseImpl::getStats(OperationContext* opCtx, BSONObjBuilder* output, dou
output->appendNumber("indexSize", indexSize / scale);
_dbEntry->appendExtraStats(opCtx, output, scale);
+
+ if (!getGlobalServiceContext()->getGlobalStorageEngine()->isEphemeral()) {
+ boost::filesystem::path dbpath(storageGlobalParams.dbpath);
+ if (storageGlobalParams.directoryperdb) {
+ dbpath /= _name;
+ }
+
+ boost::system::error_code ec;
+ boost::filesystem::space_info spaceInfo = boost::filesystem::space(dbpath, ec);
+ if (!ec) {
+ output->appendNumber("fsUsedSize", (spaceInfo.capacity - spaceInfo.available) / scale);
+ output->appendNumber("fsTotalSize", spaceInfo.capacity / scale);
+ } else {
+ output->appendNumber("fsUsedSize", -1);
+ output->appendNumber("fsTotalSize", -1);
+ log() << "Failed to query filesystem disk stats (code: " << ec.value()
+ << "): " << ec.message();
+ }
+ }
}
Status DatabaseImpl::dropView(OperationContext* opCtx, StringData fullns) {
diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp
index 4036b6e0fa1..4ca970661b4 100644
--- a/src/mongo/db/commands/dbcommands.cpp
+++ b/src/mongo/db/commands/dbcommands.cpp
@@ -1108,6 +1108,10 @@ public:
result.appendNumber("indexes", 0);
result.appendNumber("indexSize", 0);
result.appendNumber("fileSize", 0);
+ if (!getGlobalServiceContext()->getGlobalStorageEngine()->isEphemeral()) {
+ result.appendNumber("fsUsedSize", 0);
+ result.appendNumber("fsTotalSize", 0);
+ }
} else {
{
stdx::lock_guard<Client> lk(*opCtx->getClient());