diff options
author | Daniel Gottlieb <daniel.gottlieb@mongodb.com> | 2017-11-13 11:14:28 -0500 |
---|---|---|
committer | Daniel Gottlieb <daniel.gottlieb@mongodb.com> | 2017-12-20 09:43:24 -0500 |
commit | ec4d0f362962e54465061cbfa2b0ecfabce49ae3 (patch) | |
tree | 6ea99b2988132aa73b2fe2c7f0aaf301c150e88d | |
parent | 64bce66bd96ff8e19e3105b272a4e82a2ddcbb27 (diff) | |
download | mongo-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.cpp | 11 |
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++); } } |