summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/count_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/commands/count_cmd.cpp')
-rw-r--r--src/mongo/db/commands/count_cmd.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mongo/db/commands/count_cmd.cpp b/src/mongo/db/commands/count_cmd.cpp
index 3f18b9056fe..9ce6c54675e 100644
--- a/src/mongo/db/commands/count_cmd.cpp
+++ b/src/mongo/db/commands/count_cmd.cpp
@@ -105,13 +105,16 @@ public:
ExplainOptions::Verbosity verbosity,
BSONObjBuilder* out) const {
const bool isExplain = true;
- auto request = CountRequest::parseFromBSON(dbname, cmdObj, isExplain);
+ Lock::DBLock dbLock(opCtx, dbname, MODE_IS);
+ auto nss = parseNsOrUUID(opCtx, dbname, cmdObj);
+ auto request = CountRequest::parseFromBSON(nss, cmdObj, isExplain);
if (!request.isOK()) {
return request.getStatus();
}
// Acquire the db read lock.
- AutoGetCollectionOrViewForReadCommand ctx(opCtx, request.getValue().getNs());
+ AutoGetCollectionOrViewForReadCommand ctx(
+ opCtx, request.getValue().getNs(), std::move(dbLock));
Collection* collection = ctx.getCollection();
if (ctx.getView()) {
@@ -160,12 +163,15 @@ public:
const BSONObj& cmdObj,
BSONObjBuilder& result) {
const bool isExplain = false;
- auto request = CountRequest::parseFromBSON(dbname, cmdObj, isExplain);
+ Lock::DBLock dbLock(opCtx, dbname, MODE_IS);
+ auto nss = parseNsOrUUID(opCtx, dbname, cmdObj);
+ auto request = CountRequest::parseFromBSON(nss, cmdObj, isExplain);
if (!request.isOK()) {
return appendCommandStatus(result, request.getStatus());
}
- AutoGetCollectionOrViewForReadCommand ctx(opCtx, request.getValue().getNs());
+ AutoGetCollectionOrViewForReadCommand ctx(
+ opCtx, request.getValue().getNs(), std::move(dbLock));
Collection* collection = ctx.getCollection();
if (ctx.getView()) {