summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands
diff options
context:
space:
mode:
authorEsha Maharishi <esha.maharishi@mongodb.com>2019-08-01 01:10:45 -0400
committerEsha Maharishi <esha.maharishi@mongodb.com>2019-08-08 10:22:00 -0400
commit8457da2f81b5378fa7485a151cb2255700a6c31a (patch)
tree0a01c32672e8100db43d5beb414bfffcc3ae8316 /src/mongo/db/commands
parent70a987f5efd85c3162823e8a07f49566b10d2020 (diff)
downloadmongo-8457da2f81b5378fa7485a151cb2255700a6c31a.tar.gz
SERVER-42600 Implement the FCV 4.4 checkShardVersion protocol
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r--src/mongo/db/commands/find_and_modify.cpp15
-rw-r--r--src/mongo/db/commands/mr.cpp3
2 files changed, 10 insertions, 8 deletions
diff --git a/src/mongo/db/commands/find_and_modify.cpp b/src/mongo/db/commands/find_and_modify.cpp
index b12ccc69717..6c8fde275fb 100644
--- a/src/mongo/db/commands/find_and_modify.cpp
+++ b/src/mongo/db/commands/find_and_modify.cpp
@@ -175,7 +175,7 @@ void appendCommandResponse(const PlanExecutor* exec,
}
}
-void assertCanWrite(OperationContext* opCtx, const NamespaceString& nsString) {
+void assertCanWrite(OperationContext* opCtx, const NamespaceString& nsString, bool isCollection) {
uassert(ErrorCodes::NotMaster,
str::stream() << "Not primary while running findAndModify command on collection "
<< nsString.ns(),
@@ -183,7 +183,7 @@ void assertCanWrite(OperationContext* opCtx, const NamespaceString& nsString) {
// Check for shard version match
auto css = CollectionShardingState::get(opCtx, nsString);
- css->checkShardVersionOrThrow(opCtx);
+ css->checkShardVersionOrThrow(opCtx, isCollection);
}
void recordStatsForTopCommand(OperationContext* opCtx) {
@@ -276,7 +276,7 @@ public:
autoColl.getDb());
auto css = CollectionShardingState::get(opCtx, nsString);
- css->checkShardVersionOrThrow(opCtx);
+ css->checkShardVersionOrThrow(opCtx, autoColl.getCollection());
Collection* const collection = autoColl.getCollection();
const auto exec =
@@ -301,7 +301,7 @@ public:
autoColl.getDb());
auto css = CollectionShardingState::get(opCtx, nsString);
- css->checkShardVersionOrThrow(opCtx);
+ css->checkShardVersionOrThrow(opCtx, autoColl.getCollection());
Collection* const collection = autoColl.getCollection();
const auto exec =
@@ -389,7 +389,7 @@ public:
CurOp::get(opCtx)->enter_inlock(nsString.ns().c_str(), dbProfilingLevel);
}
- assertCanWrite(opCtx, nsString);
+ assertCanWrite(opCtx, nsString, autoColl.getCollection());
Collection* const collection = autoColl.getCollection();
checkIfTransactionOnCappedColl(collection, inTransaction);
@@ -455,7 +455,7 @@ public:
CurOp::get(opCtx)->enter_inlock(nsString.ns().c_str(), dbProfilingLevel);
}
- assertCanWrite(opCtx, nsString);
+ assertCanWrite(opCtx, nsString, autoColl->getCollection());
Collection* collection = autoColl->getCollection();
@@ -472,7 +472,8 @@ public:
autoColl.reset();
autoDb.emplace(opCtx, dbName, MODE_X);
- assertCanWrite(opCtx, nsString);
+ assertCanWrite(
+ opCtx, nsString, autoDb->getDb()->getCollection(opCtx, nsString));
collection = autoDb->getDb()->getCollection(opCtx, nsString);
diff --git a/src/mongo/db/commands/mr.cpp b/src/mongo/db/commands/mr.cpp
index 805ea654158..e67f97700b9 100644
--- a/src/mongo/db/commands/mr.cpp
+++ b/src/mongo/db/commands/mr.cpp
@@ -1413,7 +1413,8 @@ bool runMapReduce(OperationContext* opCtx,
const auto metadata = [&] {
AutoGetCollectionForReadCommand autoColl(opCtx, config.nss);
- return CollectionShardingState::get(opCtx, config.nss)->getOrphansFilter(opCtx);
+ return CollectionShardingState::get(opCtx, config.nss)
+ ->getOrphansFilter(opCtx, autoColl.getCollection());
}();
bool shouldHaveData = false;