summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/compact.cpp
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2021-05-05 20:25:54 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-05 22:32:48 +0000
commitc48ddf533938bc4ae85ae120b63c1de0ee290e26 (patch)
treea924614140947f889a10668de646e3e1ab76e779 /src/mongo/db/commands/compact.cpp
parent7baccddd62e581aa69b1e8d2f59ea3f26e5d8ff0 (diff)
downloadmongo-c48ddf533938bc4ae85ae120b63c1de0ee290e26.tar.gz
SERVER-54878 Compact can log negative value for bytesFreed
Diffstat (limited to 'src/mongo/db/commands/compact.cpp')
-rw-r--r--src/mongo/db/commands/compact.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mongo/db/commands/compact.cpp b/src/mongo/db/commands/compact.cpp
index cb21eccb014..0eede8c5c2c 100644
--- a/src/mongo/db/commands/compact.cpp
+++ b/src/mongo/db/commands/compact.cpp
@@ -101,7 +101,15 @@ public:
StatusWith<int64_t> status = compactCollection(opCtx, nss);
uassertStatusOK(status.getStatus());
- result.appendNumber("bytesFreed", static_cast<long long>(status.getValue()));
+
+ int64_t bytesFreed = status.getValue();
+ if (bytesFreed < 0) {
+ // When compacting a collection that is actively being written to, it is possible that
+ // the collection is larger at the completion of compaction than when it started.
+ bytesFreed = 0;
+ }
+
+ result.appendNumber("bytesFreed", static_cast<long long>(bytesFreed));
return true;
}