summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gottlieb <daniel.gottlieb@mongodb.com>2017-11-13 11:14:28 -0500
committerDaniel Gottlieb <daniel.gottlieb@mongodb.com>2017-12-20 09:43:24 -0500
commitec4d0f362962e54465061cbfa2b0ecfabce49ae3 (patch)
tree6ea99b2988132aa73b2fe2c7f0aaf301c150e88d
parent64bce66bd96ff8e19e3105b272a4e82a2ddcbb27 (diff)
downloadmongo-ec4d0f362962e54465061cbfa2b0ecfabce49ae3.tar.gz
SERVER-31930: Have ephemeralForTest capped collections unindex deleted documents in rollback.
(cherry picked from commit 6ad1c6cea2e516ac8800265ed7358edaea9382d8)
-rw-r--r--src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp
index a537a9c63c6..8c816d39f31 100644
--- a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp
+++ b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp
@@ -556,8 +556,15 @@ void EphemeralForTestRecordStore::temp_cappedTruncateAfter(OperationContext* txn
Records::iterator it =
inclusive ? _data->records.lower_bound(end) : _data->records.upper_bound(end);
while (it != _data->records.end()) {
- txn->recoveryUnit()->registerChange(new RemoveChange(txn, _data, it->first, it->second));
- _data->dataSize -= it->second.size;
+ RecordId id = it->first;
+ EphemeralForTestRecord record = it->second;
+
+ if (_cappedCallback) {
+ uassertStatusOK(_cappedCallback->aboutToDeleteCapped(txn, id, record.toRecordData()));
+ }
+
+ txn->recoveryUnit()->registerChange(new RemoveChange(txn, _data, id, record));
+ _data->dataSize -= record.size;
_data->records.erase(it++);
}
}