diff options
author | Maria van Keulen <maria@mongodb.com> | 2017-02-06 18:06:50 -0500 |
---|---|---|
committer | Maria van Keulen <maria@mongodb.com> | 2017-03-30 16:38:12 -0400 |
commit | 4741285f93e79256b5fa6e04552ebd6a53e6b29e (patch) | |
tree | fb1428e170114105257eab6dbc4371db2ac866d9 /src/mongo/db/storage/mmap_v1 | |
parent | 3105cafb4d712deb5cef0b6b12f137b14d2dee33 (diff) | |
download | mongo-4741285f93e79256b5fa6e04552ebd6a53e6b29e.tar.gz |
SERVER-27930 Invalidate old index record IDs after renaming collections
(cherry picked from commit 08996a3fa199dd04f428c663e78239c07339e7e5)
Conflicts:
jstests/core/list_indexes_invalidation.js
Diffstat (limited to 'src/mongo/db/storage/mmap_v1')
-rw-r--r-- | src/mongo/db/storage/mmap_v1/mmap_v1_database_catalog_entry.cpp | 9 |
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); } |