diff options
author | Esha Maharishi <esha.maharishi@mongodb.com> | 2019-08-01 01:10:45 -0400 |
---|---|---|
committer | Esha Maharishi <esha.maharishi@mongodb.com> | 2019-08-08 10:22:00 -0400 |
commit | 8457da2f81b5378fa7485a151cb2255700a6c31a (patch) | |
tree | 0a01c32672e8100db43d5beb414bfffcc3ae8316 /src/mongo/db/commands | |
parent | 70a987f5efd85c3162823e8a07f49566b10d2020 (diff) | |
download | mongo-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.cpp | 15 | ||||
-rw-r--r-- | src/mongo/db/commands/mr.cpp | 3 |
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; |