summaryrefslogtreecommitdiff
path: root/src/mongo/s/commands
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2020-10-02 11:11:45 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-10-02 18:44:07 +0000
commit9b8d4c2f029e2384fa769014c00091e4de362ea4 (patch)
tree179772b6808276c49fb3c69d22c411993773dc09 /src/mongo/s/commands
parent0b805a4119272e83f9ffe9bf7990397be9b0c7e9 (diff)
downloadmongo-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.cpp5
-rw-r--r--src/mongo/s/commands/kill_sessions_remote.cpp8
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);
}