diff options
author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2020-10-02 11:11:45 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-10-02 18:44:07 +0000 |
commit | 9b8d4c2f029e2384fa769014c00091e4de362ea4 (patch) | |
tree | 179772b6808276c49fb3c69d22c411993773dc09 /src/mongo/s/commands | |
parent | 0b805a4119272e83f9ffe9bf7990397be9b0c7e9 (diff) | |
download | mongo-9b8d4c2f029e2384fa769014c00091e4de362ea4.tar.gz |
SERVER-50375 Ensure mongos forwards API parameters to shards
Diffstat (limited to 'src/mongo/s/commands')
-rw-r--r-- | src/mongo/s/commands/cluster_kill_op.cpp | 5 | ||||
-rw-r--r-- | src/mongo/s/commands/kill_sessions_remote.cpp | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/mongo/s/commands/cluster_kill_op.cpp b/src/mongo/s/commands/cluster_kill_op.cpp index 1d4927b0f79..2ce1ecf79ef 100644 --- a/src/mongo/s/commands/cluster_kill_op.cpp +++ b/src/mongo/s/commands/cluster_kill_op.cpp @@ -38,6 +38,7 @@ #include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/util/bson_extract.h" #include "mongo/client/connpool.h" +#include "mongo/db/api_parameters.h" #include "mongo/db/audit.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/commands.h" @@ -111,8 +112,10 @@ private: result.append("shardid", opId); ScopedDbConnection conn(shard->getConnString()); + BSONObjBuilder bob(BSON("killOp" << 1 << "op" << opId)); + APIParameters::get(opCtx).appendInfo(&bob); // intentionally ignore return value - that is how legacy killOp worked. - conn->runCommand(OpMsgRequest::fromDBAndBody("admin", BSON("killOp" << 1 << "op" << opId))); + conn->runCommand(OpMsgRequest::fromDBAndBody("admin", bob.obj())); conn.done(); // The original behavior of killOp on mongos is to always return success, regardless of diff --git a/src/mongo/s/commands/kill_sessions_remote.cpp b/src/mongo/s/commands/kill_sessions_remote.cpp index d9b5ce26ccf..0bda8eacf61 100644 --- a/src/mongo/s/commands/kill_sessions_remote.cpp +++ b/src/mongo/s/commands/kill_sessions_remote.cpp @@ -119,9 +119,11 @@ SessionKiller::Result killSessionsRemote(OperationContext* opCtx, // Generate the kill command. KillAllSessionsByPatternCmd cmd; - cmd.setKillAllSessionsByPattern(std::vector<KillAllSessionsByPattern>{ - matcher.getPatterns().begin(), matcher.getPatterns().end()}); - + std::vector<KillAllSessionsByPattern> patterns; + for (auto& item : matcher.getPatterns()) { + patterns.push_back(std::move(item.pattern)); + } + cmd.setKillAllSessionsByPattern(std::move(patterns)); return parallelExec(opCtx, cmd.toBSON(), urbg); } |