diff options
author | Mathias Stearn <mathias@10gen.com> | 2015-05-18 18:01:38 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2015-06-09 16:33:22 -0400 |
commit | 3b731debe162706cbbfabd9578bbb57ab5a7a7d8 (patch) | |
tree | 7b26f5541e5de0060bf75f5563b37cae5a246ee8 /src/mongo/db/repair_database.cpp | |
parent | f50d1d0b7df924926855badd3cd700653f75f0f8 (diff) | |
download | mongo-3b731debe162706cbbfabd9578bbb57ab5a7a7d8.tar.gz |
SERVER-16444 New API for navigating RecordStores
Diffstat (limited to 'src/mongo/db/repair_database.cpp')
-rw-r--r-- | src/mongo/db/repair_database.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/mongo/db/repair_database.cpp b/src/mongo/db/repair_database.cpp index 9bbb8da24de..fccf3ef21e3 100644 --- a/src/mongo/db/repair_database.cpp +++ b/src/mongo/db/repair_database.cpp @@ -127,22 +127,21 @@ namespace { long long dataSize = 0; RecordStore* rs = collection->getRecordStore(); - boost::scoped_ptr<RecordIterator> it(rs->getIterator(txn)); - while (!it->isEOF()) { - RecordId id = it->curr(); - RecordData data = it->dataFor(id); - invariant(id == it->getNext()); + auto cursor = rs->getCursor(txn); + while (auto record = cursor->next()) { + RecordId id = record->id; + RecordData& data = record->data; Status status = validateBSON(data.data(), data.size()); if (!status.isOK()) { log() << "Invalid BSON detected at " << id << ": " << status << ". Deleting."; - it->saveState(); + cursor->savePositioned(); // 'data' is no longer valid. { WriteUnitOfWork wunit(txn); rs->deleteRecord(txn, id); wunit.commit(); } - it->restoreState(txn); + cursor->restore(txn); continue; } |