summaryrefslogtreecommitdiff
path: root/src/mongo/s/commands
diff options
context:
space:
mode:
authorIrina Yatsenko <irina.yatsenko@mongodb.com>2021-06-28 18:53:31 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-07-08 21:55:02 +0000
commitc0217c62b43b30159bc60601c3af833cb7a8f82e (patch)
treeac69490471400dfa30a25a26addd7a9e3d977bf4 /src/mongo/s/commands
parente19d6e4d9ce4405fa71542d2e34eb261e86de4a5 (diff)
downloadmongo-c0217c62b43b30159bc60601c3af833cb7a8f82e.tar.gz
SERVER-57457 Close connection on receiving of OP_DELETE, OP_INSERT, OP_UPDATE and OP_KILL_CURSORS
Diffstat (limited to 'src/mongo/s/commands')
-rw-r--r--src/mongo/s/commands/strategy.cpp97
1 files changed, 0 insertions, 97 deletions
diff --git a/src/mongo/s/commands/strategy.cpp b/src/mongo/s/commands/strategy.cpp
index dee7de3a6c1..d3115645937 100644
--- a/src/mongo/s/commands/strategy.cpp
+++ b/src/mongo/s/commands/strategy.cpp
@@ -1438,103 +1438,6 @@ DbResponse Strategy::getMore(OperationContext* opCtx, const NamespaceString& nss
cursorResponse.getValue().getCursorId());
}
-void Strategy::killCursors(OperationContext* opCtx, DbMessage* dbm) {
- const int numCursors = dbm->pullInt();
- massert(34425,
- str::stream() << "Invalid killCursors message. numCursors: " << numCursors
- << ", message size: " << dbm->msg().dataSize() << ".",
- dbm->msg().dataSize() == 8 + (8 * numCursors));
- uassert(28794,
- str::stream() << "numCursors must be between 1 and 29999. numCursors: " << numCursors
- << ".",
- numCursors >= 1 && numCursors < 30000);
-
- globalOpCounters.gotKillCursorsDeprecated();
-
- ConstDataCursor cursors(dbm->getArray(numCursors));
-
- Client* const client = opCtx->getClient();
- ClusterCursorManager* const manager = Grid::get(opCtx)->getCursorManager();
-
- for (int i = 0; i < numCursors; ++i) {
- const CursorId cursorId = cursors.readAndAdvance<LittleEndian<int64_t>>();
-
- boost::optional<NamespaceString> nss = manager->getNamespaceForCursorId(cursorId);
- if (!nss) {
- LOGV2_DEBUG(22773,
- 3,
- "Can't find cursor to kill, no namespace found. Cursor id: {cursorId}",
- "Can't find cursor to kill, no namespace found",
- "cursorId"_attr = cursorId);
- continue;
- }
-
- auto authzSession = AuthorizationSession::get(client);
- auto authChecker = [&authzSession, &nss](UserNameIterator userNames) -> Status {
- return auth::checkAuthForKillCursors(authzSession, *nss, userNames);
- };
- auto authzStatus = manager->checkAuthForKillCursors(opCtx, *nss, cursorId, authChecker);
- audit::logKillCursorsAuthzCheck(client, *nss, cursorId, authzStatus.code());
- if (!authzStatus.isOK()) {
- LOGV2_DEBUG(
- 22774,
- 3,
- "Not authorized to kill cursor. Namespace: '{namespace}', cursor id: {cursorId}",
- "Not authorized to kill cursor",
- "namespace"_attr = *nss,
- "cursorId"_attr = cursorId);
- continue;
- }
-
- Status killCursorStatus = manager->killCursor(opCtx, *nss, cursorId);
- if (!killCursorStatus.isOK()) {
- LOGV2_DEBUG(
- 22775,
- 3,
- "Can't find cursor to kill. Namespace: '{namespace}', cursor id: {cursorId}",
- "Can't find cursor to kill",
- "namespace"_attr = *nss,
- "cursorId"_attr = cursorId);
- continue;
- }
-
- LOGV2_DEBUG(22776,
- 3,
- "Killed cursor. Namespace: '{namespace}', cursor id: {cursorId}",
- "Killed cursor",
- "namespace"_attr = *nss,
- "cursorId"_attr = cursorId);
- }
-}
-
-void Strategy::writeOp(std::shared_ptr<RequestExecutionContext> rec) {
- rec->setRequest([msg = rec->getMessage()]() {
- switch (msg.operation()) {
- case dbInsert: {
- auto op = InsertOp::parseLegacy(msg);
- globalOpCounters.gotInsertsDeprecated(op.getDocuments().size());
- return op.serialize({});
- }
- case dbUpdate: {
- globalOpCounters.gotUpdateDeprecated();
- return UpdateOp::parseLegacy(msg).serialize({});
- }
- case dbDelete: {
- globalOpCounters.gotDeleteDeprecated();
- return DeleteOp::parseLegacy(msg).serialize({});
- }
- default:
- MONGO_UNREACHABLE;
- }
- }());
-
- rec->setReplyBuilder(std::make_unique<rpc::OpMsgReplyBuilder>());
- auto bob = std::make_shared<BSONObjBuilder>(); // built objects are ignorned.
- future_util::makeState<ParseAndRunCommand>(std::move(rec), std::move(bob))
- .thenWithState([](auto* runner) { return runner->run(); })
- .get();
-}
-
void Strategy::explainFind(OperationContext* opCtx,
const BSONObj& findCommandObj,
const FindCommandRequest& findCommand,