diff options
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/s/commands/cluster_map_reduce_cmd.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp index 53432a49499..abd98902feb 100644 --- a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp +++ b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp @@ -483,19 +483,18 @@ public: // We need to determine whether we need to drop and shard the output collection and // send the UUID to the shards. We will always do this if we are using replace so we // can skip this check in that case. If using merge or reduce, we only want to do this - // if the output collection does not exist or if it exists and is an empty sharded - // collection. + // if the output collection does not exist. bool shouldDropAndShard = replaceOutput; if (!replaceOutput && outputCollNss.isValid()) { - const auto primaryShard = - uassertStatusOK(shardRegistry->getShard(opCtx, outputDbInfo.primaryId())); - ScopedDbConnection conn(primaryShard->getConnString()); - if (!outputRoutingInfo.cm()) { // The output collection either exists and is unsharded, or does not exist. If // the output collection exists and is unsharded, fail because we should not go // from unsharded to sharded. + const auto primaryShard = + uassertStatusOK(shardRegistry->getShard(opCtx, outputDbInfo.primaryId())); + ScopedDbConnection conn(primaryShard->getConnString()); BSONObj listCollsCmdResponse; + ok = conn->runCommand(outDB, BSON("listCollections" << 1 << "filter" @@ -511,15 +510,10 @@ public: // If we reach here, the collection does not exist at all. shouldDropAndShard = true; + conn.done(); } else { - // The output collection exists and is sharded. We need to determine whether the - // collection is empty in order to decide whether we should drop and re-shard - // it. - // We don't want to do this if the collection is not empty. - shouldDropAndShard = (conn->count(outputCollNss.ns()) == 0); + // The output collection exists and is sharded. Do not drop and reshard it. } - - conn.done(); } // If we are using replace, the output collection exists and is sharded, or the output |