summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/rollbacktests.cpp
diff options
context:
space:
mode:
authorXiangyu Yao <xiangyu.yao@mongodb.com>2017-11-01 10:52:26 -0400
committerXiangyu Yao <xiangyu.yao@mongodb.com>2018-01-30 14:24:29 -0500
commit97fbe83558a3d018b89eaff2d1ff74df1e67782d (patch)
tree3cca206a03a017221ebf8a812d2476f0b384c9c9 /src/mongo/dbtests/rollbacktests.cpp
parente6783ca2cac1e5d16b822e1508a1c025cdbded81 (diff)
downloadmongo-97fbe83558a3d018b89eaff2d1ff74df1e67782d.tar.gz
SERVER-31462 Register Database::AddCollectionChange in the correct order
The wrong order leads to the rollback of CollectionImpl happening after the rollback of KVCollectionCatalogEntry. This means the Collection destructor would call setCappedCallback() on an already destroyed RecordStore. (cherry picked from commit f9e38f099a892964a09d4a80aafd8edfef21594d)
Diffstat (limited to 'src/mongo/dbtests/rollbacktests.cpp')
-rw-r--r--src/mongo/dbtests/rollbacktests.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mongo/dbtests/rollbacktests.cpp b/src/mongo/dbtests/rollbacktests.cpp
index b842eb5a9bc..300d3f46aed 100644
--- a/src/mongo/dbtests/rollbacktests.cpp
+++ b/src/mongo/dbtests/rollbacktests.cpp
@@ -216,7 +216,7 @@ public:
}
};
-template <bool rollback, bool defaultIndexes>
+template <bool rollback, bool defaultIndexes, bool capped>
class RenameCollection {
public:
void run() {
@@ -236,7 +236,8 @@ public:
WriteUnitOfWork uow(&txn);
ASSERT(!collectionExists(&ctx, source.ns()));
ASSERT(!collectionExists(&ctx, target.ns()));
- ASSERT_OK(userCreateNS(&txn, ctx.db(), source.ns(), BSONObj(), defaultIndexes));
+ auto options = capped ? BSON("capped" << true << "size" << 1000) : BSONObj();
+ ASSERT_OK(userCreateNS(&txn, ctx.db(), source.ns(), options, defaultIndexes));
uow.commit();
}
ASSERT(collectionExists(&ctx, source.ns()));
@@ -263,7 +264,7 @@ public:
}
};
-template <bool rollback, bool defaultIndexes>
+template <bool rollback, bool defaultIndexes, bool capped>
class RenameDropTargetCollection {
public:
void run() {
@@ -288,8 +289,9 @@ public:
WriteUnitOfWork uow(&txn);
ASSERT(!collectionExists(&ctx, source.ns()));
ASSERT(!collectionExists(&ctx, target.ns()));
- ASSERT_OK(userCreateNS(&txn, ctx.db(), source.ns(), BSONObj(), defaultIndexes));
- ASSERT_OK(userCreateNS(&txn, ctx.db(), target.ns(), BSONObj(), defaultIndexes));
+ auto options = capped ? BSON("capped" << true << "size" << 1000) : BSONObj();
+ ASSERT_OK(userCreateNS(&txn, ctx.db(), source.ns(), options, defaultIndexes));
+ ASSERT_OK(userCreateNS(&txn, ctx.db(), target.ns(), options, defaultIndexes));
insertRecord(&txn, source, sourceDoc);
insertRecord(&txn, target, targetDoc);