summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/querytests.cpp
diff options
context:
space:
mode:
authorCharlie Swanson <charlie.swanson@mongodb.com>2017-03-02 13:54:24 -0500
committerCharlie Swanson <charlie.swanson@mongodb.com>2017-03-15 11:03:44 -0400
commitf05b9437fbdc53deecf55ed3c20e36af3d733953 (patch)
tree8b66acc133f83f27ef00f31600538f225ec2746a /src/mongo/dbtests/querytests.cpp
parenta1f15dfd788a78da77bda6675132d4144691fce1 (diff)
downloadmongo-f05b9437fbdc53deecf55ed3c20e36af3d733953.tar.gz
SERVER-22541 Refactor RAII locking helpers.
Removes the class 'ScopedTransaction' and moves the responsibility of abandoning the snapshot onto the GlobalLock class. Also renames the AutoGetCollectionForRead class to AutoGetCollectionForReadCommand, and adds a new AutoGetCollectionForRead class. Unlike AutoGetCollectionForReadCommand, this new class will not update the namespace on the CurrentOp object, nor will it add an entry to Top.
Diffstat (limited to 'src/mongo/dbtests/querytests.cpp')
-rw-r--r--src/mongo/dbtests/querytests.cpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/src/mongo/dbtests/querytests.cpp b/src/mongo/dbtests/querytests.cpp
index 83765c6ecd4..8171cb96cbe 100644
--- a/src/mongo/dbtests/querytests.cpp
+++ b/src/mongo/dbtests/querytests.cpp
@@ -65,7 +65,7 @@ const auto kIndexVersion = IndexDescriptor::IndexVersion::kV2;
class Base {
public:
- Base() : _scopedXact(&_opCtx, MODE_X), _lk(_opCtx.lockState()), _context(&_opCtx, ns()) {
+ Base() : _lk(&_opCtx), _context(&_opCtx, ns()) {
{
WriteUnitOfWork wunit(&_opCtx);
_database = _context.db();
@@ -121,9 +121,8 @@ protected:
}
- const ServiceContext::UniqueOperationContext _txnPtr = cc().makeOperationContext();
- OperationContext& _opCtx = *_txnPtr;
- ScopedTransaction _scopedXact;
+ const ServiceContext::UniqueOperationContext _opCtxPtr = cc().makeOperationContext();
+ OperationContext& _opCtx = *_opCtxPtr;
Lock::GlobalWrite _lk;
OldClientContext _context;
@@ -188,8 +187,7 @@ public:
void run() {
// We don't normally allow empty objects in the database, but test that we can find
// an empty object (one might be allowed inside a reserved namespace at some point).
- ScopedTransaction transaction(&_opCtx, MODE_X);
- Lock::GlobalWrite lk(_opCtx.lockState());
+ Lock::GlobalWrite lk(&_opCtx);
OldClientContext ctx(&_opCtx, "unittests.querytests");
{
@@ -336,7 +334,7 @@ public:
// Check that the cursor has been removed.
{
- AutoGetCollectionForRead ctx(&_opCtx, NamespaceString(ns));
+ AutoGetCollectionForReadCommand ctx(&_opCtx, NamespaceString(ns));
ASSERT(0 == ctx.getCollection()->getCursorManager()->numCursors());
}
@@ -384,7 +382,7 @@ public:
// Check that the cursor still exists
{
- AutoGetCollectionForRead ctx(&_opCtx, NamespaceString(ns));
+ AutoGetCollectionForReadCommand ctx(&_opCtx, NamespaceString(ns));
ASSERT(1 == ctx.getCollection()->getCursorManager()->numCursors());
ASSERT_OK(ctx.getCollection()->getCursorManager()->pinCursor(cursorId).getStatus());
}
@@ -661,8 +659,7 @@ public:
_client.dropCollection(ns);
_client.createCollection(ns, 10, true);
- ScopedTransaction transaction(&_opCtx, MODE_IX);
- Lock::DBLock lk(_opCtx.lockState(), "unittests", MODE_X);
+ Lock::DBLock lk(&_opCtx, "unittests", MODE_X);
OldClientContext ctx(&_opCtx, ns);
BSONObj info;
@@ -1137,8 +1134,7 @@ private:
class DirectLocking : public ClientBase {
public:
void run() {
- ScopedTransaction transaction(&_opCtx, MODE_X);
- Lock::GlobalWrite lk(_opCtx.lockState());
+ Lock::GlobalWrite lk(&_opCtx);
OldClientContext ctx(&_opCtx, "unittests.DirectLocking");
_client.remove("a.b", BSONObj());
ASSERT_EQUALS("unittests", ctx.db()->name());
@@ -1252,7 +1248,7 @@ public:
}
size_t numCursorsOpen() {
- AutoGetCollectionForRead ctx(&_opCtx, NamespaceString(_ns));
+ AutoGetCollectionForReadCommand ctx(&_opCtx, NamespaceString(_ns));
Collection* collection = ctx.getCollection();
if (!collection)
return 0;
@@ -1600,13 +1596,9 @@ public:
class CollectionInternalBase : public CollectionBase {
public:
CollectionInternalBase(const char* nsLeaf)
- : CollectionBase(nsLeaf),
- _scopedXact(&_opCtx, MODE_IX),
- _lk(_opCtx.lockState(), "unittests", MODE_X),
- _ctx(&_opCtx, ns()) {}
+ : CollectionBase(nsLeaf), _lk(&_opCtx, "unittests", MODE_X), _ctx(&_opCtx, ns()) {}
private:
- ScopedTransaction _scopedXact;
Lock::DBLock _lk;
OldClientContext _ctx;
};
@@ -1656,7 +1648,7 @@ public:
ClientCursor* clientCursor = 0;
{
- AutoGetCollectionForRead ctx(&_opCtx, NamespaceString(ns()));
+ AutoGetCollectionForReadCommand ctx(&_opCtx, NamespaceString(ns()));
auto clientCursorPin =
unittest::assertGet(ctx.getCollection()->getCursorManager()->pinCursor(cursorId));
clientCursor = clientCursorPin.getCursor();