summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp
index d7c0c4fe8e9..60c3055f3cc 100644
--- a/src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp
+++ b/src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp
@@ -35,6 +35,8 @@
#include <boost/scoped_ptr.hpp>
#include <utility>
+#include "mongo/db/catalog/database.h"
+#include "mongo/db/catalog/database_holder.h"
#include "mongo/db/catalog/index_catalog_entry.h"
#include "mongo/db/index/2d_access_method.h"
#include "mongo/db/index/btree_access_method.h"
@@ -308,6 +310,13 @@ Status MMAPV1DatabaseCatalogEntry::renameCollection(OperationContext* txn,
if (!s.isOK())
return s;
}
+ // Invalidate index record for the old collection.
+ StringData dbName(nsToDatabaseSubstring(_collections.begin()->first));
+ invariant(txn->lockState()->isDbLockedForMode(dbName, MODE_X));
+ Database* db = dbHolder().get(txn, dbName);
+ Collection* systemIndexes = db->getCollection(db->getSystemIndexesName());
+ systemIndexes->getCursorManager()->invalidateDocument(
+ txn, record->id, INVALIDATION_DELETION);
systemIndexRecordStore->deleteRecord(txn, loc);
}