summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/auth/authz_manager_external_state_d.cpp5
-rw-r--r--src/mongo/db/cloner.cpp16
-rw-r--r--src/mongo/db/commands/dbcommands_d.cpp6
-rw-r--r--src/mongo/db/commands/set_feature_compatibility_version_command.cpp16
-rw-r--r--src/mongo/db/commands/user_management_commands.cpp5
-rw-r--r--src/mongo/db/dbdirectclient.cpp17
-rw-r--r--src/mongo/db/dbdirectclient.h14
-rw-r--r--src/mongo/db/dbdirectclient_test.cpp2
-rw-r--r--src/mongo/db/exhaust_cursor_currentop_integration_test.cpp2
-rw-r--r--src/mongo/db/op_observer_impl_test.cpp15
-rw-r--r--src/mongo/db/persistent_task_store.h10
-rw-r--r--src/mongo/db/repl/apply_ops.cpp3
-rw-r--r--src/mongo/db/repl/collection_cloner.cpp19
-rw-r--r--src/mongo/db/repl/oplog_interface_remote.cpp17
-rw-r--r--src/mongo/db/repl/primary_only_service.cpp3
-rw-r--r--src/mongo/db/repl/replication_recovery.cpp11
-rw-r--r--src/mongo/db/repl/roll_back_local_operations_test.cpp18
-rw-r--r--src/mongo/db/repl/rollback_impl.cpp13
-rw-r--r--src/mongo/db/repl/rollback_source_impl.cpp14
-rw-r--r--src/mongo/db/repl/tenant_collection_cloner.cpp37
-rw-r--r--src/mongo/db/repl/tenant_migration_recipient_service.cpp6
-rw-r--r--src/mongo/db/repl/transaction_oplog_application.cpp7
-rw-r--r--src/mongo/db/rs_local_client.cpp14
-rw-r--r--src/mongo/db/s/balancer/balancer_commands_scheduler_impl.cpp3
-rw-r--r--src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp6
-rw-r--r--src/mongo/db/s/persistent_task_queue.h5
-rw-r--r--src/mongo/db/s/recoverable_critical_section_service.cpp15
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp5
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_test.cpp10
-rw-r--r--src/mongo/db/s/resharding/resharding_donor_service_test.cpp16
-rw-r--r--src/mongo/db/s/resharding/resharding_recipient_service_test.cpp5
-rw-r--r--src/mongo/db/s/session_catalog_migration_source.cpp6
-rw-r--r--src/mongo/db/s/shard_metadata_util.cpp27
-rw-r--r--src/mongo/db/s/shard_metadata_util_test.cpp13
-rw-r--r--src/mongo/db/s/sharding_ddl_util_test.cpp39
-rw-r--r--src/mongo/db/s/transaction_coordinator_util.cpp4
-rw-r--r--src/mongo/db/session_catalog_mongod.cpp19
-rw-r--r--src/mongo/db/transaction_participant_retryable_writes_test.cpp20
38 files changed, 235 insertions, 228 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_d.cpp b/src/mongo/db/auth/authz_manager_external_state_d.cpp
index e8dc4cdda7a..2f0618a200b 100644
--- a/src/mongo/db/auth/authz_manager_external_state_d.cpp
+++ b/src/mongo/db/auth/authz_manager_external_state_d.cpp
@@ -65,7 +65,10 @@ Status AuthzManagerExternalStateMongod::query(
const std::function<void(const BSONObj&)>& resultProcessor) {
try {
DBDirectClient client(opCtx);
- client.query(resultProcessor, collectionName, filter, Query(), &projection);
+ FindCommandRequest findRequest{collectionName};
+ findRequest.setFilter(filter);
+ findRequest.setProjection(projection);
+ client.find(std::move(findRequest), ReadPreferenceSetting{}, resultProcessor);
return Status::OK();
} catch (const DBException& e) {
return e.toStatus();
diff --git a/src/mongo/db/cloner.cpp b/src/mongo/db/cloner.cpp
index 47a52d59dcd..0f3aabee49a 100644
--- a/src/mongo/db/cloner.cpp
+++ b/src/mongo/db/cloner.cpp
@@ -250,14 +250,14 @@ void Cloner::_copy(OperationContext* opCtx,
int options = QueryOption_NoCursorTimeout | QueryOption_Exhaust;
- conn->query(std::function<void(DBClientCursorBatchIterator&)>(f),
- nss,
- BSONObj{} /* filter */,
- Query() /* querySettings */,
- nullptr,
- options,
- 0 /* batchSize */,
- repl::ReadConcernArgs::kImplicitDefault);
+ conn->query_DEPRECATED(std::function<void(DBClientCursorBatchIterator&)>(f),
+ nss,
+ BSONObj{} /* filter */,
+ Query() /* querySettings */,
+ nullptr,
+ options,
+ 0 /* batchSize */,
+ repl::ReadConcernArgs::kImplicitDefault);
}
void Cloner::_copyIndexes(OperationContext* opCtx,
diff --git a/src/mongo/db/commands/dbcommands_d.cpp b/src/mongo/db/commands/dbcommands_d.cpp
index c2ae35541ea..4bcc4350455 100644
--- a/src/mongo/db/commands/dbcommands_d.cpp
+++ b/src/mongo/db/commands/dbcommands_d.cpp
@@ -411,8 +411,10 @@ public:
const BSONObj& query,
const BSONObj& sort) {
DBDirectClient client(opCtx);
- std::unique_ptr<DBClientCursor> c =
- client.query(NamespaceString(ns), query, Query().sort(sort));
+ FindCommandRequest findRequest{NamespaceString{ns}};
+ findRequest.setFilter(query);
+ findRequest.setSort(sort);
+ std::unique_ptr<DBClientCursor> c = client.find(std::move(findRequest));
while (c->more()) {
LOGV2(20454, "Chunk: {chunk}", "Dumping chunks", "chunk"_attr = c->nextSafe());
}
diff --git a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
index 0afc4dd5348..828d1857c8a 100644
--- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
+++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
@@ -780,13 +780,10 @@ private:
DBDirectClient client(opCtx);
LogicalSessionIdMap<TxnNumber> parentLsidToTxnNum;
- auto projection = BSON("_id" << 1 << "parentLsid" << 1);
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("parentLsid" << BSON("$exists" << true)),
- {},
- 0,
- 0,
- &projection);
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("parentLsid" << BSON("$exists" << true)));
+ findRequest.setProjection(BSON("_id" << 1 << "parentLsid" << 1));
+ auto cursor = client.find(std::move(findRequest));
while (cursor->more()) {
auto doc = cursor->next();
@@ -823,8 +820,9 @@ private:
for (const auto& [lsid, txnNumber] : parentLsidToTxnNum) {
SessionTxnRecord modifiedDoc;
bool parentSessionExists = false;
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << lsid.toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << lsid.toBSON()));
+ auto cursor = client.find(std::move(findRequest));
if ((parentSessionExists = cursor->more())) {
modifiedDoc = SessionTxnRecord::parse(
IDLParserErrorContext("parse transaction document to modify"), cursor->next());
diff --git a/src/mongo/db/commands/user_management_commands.cpp b/src/mongo/db/commands/user_management_commands.cpp
index 178bd5c27f5..2a5f37ae267 100644
--- a/src/mongo/db/commands/user_management_commands.cpp
+++ b/src/mongo/db/commands/user_management_commands.cpp
@@ -229,7 +229,10 @@ Status queryAuthzDocument(OperationContext* opCtx,
const std::function<void(const BSONObj&)>& resultProcessor) {
try {
DBDirectClient client(opCtx);
- client.query(resultProcessor, collectionName, query, Query(), &projection);
+ FindCommandRequest findRequest{collectionName};
+ findRequest.setFilter(query);
+ findRequest.setProjection(projection);
+ client.find(std::move(findRequest), ReadPreferenceSetting{}, resultProcessor);
return Status::OK();
} catch (const DBException& e) {
return e.toStatus();
diff --git a/src/mongo/db/dbdirectclient.cpp b/src/mongo/db/dbdirectclient.cpp
index 580104f1c48..479557afc7e 100644
--- a/src/mongo/db/dbdirectclient.cpp
+++ b/src/mongo/db/dbdirectclient.cpp
@@ -145,18 +145,11 @@ void DBDirectClient::say(Message& toSend, bool isRetry, string* actualServer) {
invariant(dbResponse.response.empty());
}
-unique_ptr<DBClientCursor> DBDirectClient::query(const NamespaceStringOrUUID& nsOrUuid,
- const BSONObj& filter,
- const Query& querySettings,
- int limit,
- int nToSkip,
- const BSONObj* fieldsToReturn,
- int queryOptions,
- int batchSize,
- boost::optional<BSONObj> readConcernObj) {
- invariant(!readConcernObj, "passing readConcern to DBDirectClient functions is not supported");
- return DBClientBase::query(
- nsOrUuid, filter, querySettings, limit, nToSkip, fieldsToReturn, queryOptions, batchSize);
+std::unique_ptr<DBClientCursor> DBDirectClient::find(FindCommandRequest findRequest,
+ const ReadPreferenceSetting& readPref) {
+ invariant(!findRequest.getReadConcern(),
+ "passing readConcern to DBDirectClient::find() is not supported");
+ return DBClientBase::find(std::move(findRequest), readPref);
}
write_ops::FindAndModifyCommandReply DBDirectClient::findAndModify(
diff --git a/src/mongo/db/dbdirectclient.h b/src/mongo/db/dbdirectclient.h
index b0f8a74f09f..7c8e89d0bc2 100644
--- a/src/mongo/db/dbdirectclient.h
+++ b/src/mongo/db/dbdirectclient.h
@@ -52,21 +52,13 @@ class DBDirectClient : public DBClientBase {
public:
DBDirectClient(OperationContext* opCtx);
+ using DBClientBase::find;
using DBClientBase::insert;
- using DBClientBase::query;
using DBClientBase::remove;
using DBClientBase::update;
- std::unique_ptr<DBClientCursor> query(
- const NamespaceStringOrUUID& nsOrUuid,
- const BSONObj& filter,
- const Query& querySettings = Query(),
- int limit = 0,
- int nToSkip = 0,
- const BSONObj* fieldsToReturn = nullptr,
- int queryOptions = 0,
- int batchSize = 0,
- boost::optional<BSONObj> readConcernObj = boost::none) override;
+ std::unique_ptr<DBClientCursor> find(FindCommandRequest findRequest,
+ const ReadPreferenceSetting& readPref) override;
write_ops::FindAndModifyCommandReply findAndModify(
const write_ops::FindAndModifyCommandRequest& findAndModify);
diff --git a/src/mongo/db/dbdirectclient_test.cpp b/src/mongo/db/dbdirectclient_test.cpp
index 9b94c094aa2..f46097d4004 100644
--- a/src/mongo/db/dbdirectclient_test.cpp
+++ b/src/mongo/db/dbdirectclient_test.cpp
@@ -172,7 +172,7 @@ TEST_F(DBDirectClientTest, ExhaustQuery) {
// The query should work even though exhaust mode is requested.
int batchSize = 2;
- auto cursor = client.query(
+ auto cursor = client.query_DEPRECATED(
kNs, BSONObj{}, Query{}, 0 /*limit*/, 0 /*skip*/, nullptr, QueryOption_Exhaust, batchSize);
ASSERT_EQ(cursor->itcount(), numDocs);
}
diff --git a/src/mongo/db/exhaust_cursor_currentop_integration_test.cpp b/src/mongo/db/exhaust_cursor_currentop_integration_test.cpp
index 897cdc62e2b..168107cb11d 100644
--- a/src/mongo/db/exhaust_cursor_currentop_integration_test.cpp
+++ b/src/mongo/db/exhaust_cursor_currentop_integration_test.cpp
@@ -153,7 +153,7 @@ auto startExhaustQuery(
// Issue the initial 'find' with a batchSize of 2 and the exhaust flag set.
// We then iterate through the first batch and confirm that the results are
// as expected.
- queryCursor = queryConnection->query(
+ queryCursor = queryConnection->query_DEPRECATED(
testNSS, BSONObj{}, Query(), 0, 0, &projSpec, queryOptions, 2);
for (int i = 0; i < 2; ++i) {
ASSERT_BSONOBJ_EQ(queryCursor->nextSafe(), BSON("a" << i));
diff --git a/src/mongo/db/op_observer_impl_test.cpp b/src/mongo/db/op_observer_impl_test.cpp
index 5e6f0231db5..fabf4919dbb 100644
--- a/src/mongo/db/op_observer_impl_test.cpp
+++ b/src/mongo/db/op_observer_impl_test.cpp
@@ -906,8 +906,9 @@ protected:
repl::OpTime opTime,
boost::optional<DurableTxnStateEnum> txnState) {
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << session()->getSessionId().toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << session()->getSessionId().toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(cursor->more());
@@ -932,16 +933,18 @@ protected:
void assertNoTxnRecord() {
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << session()->getSessionId().toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << session()->getSessionId().toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(!cursor->more());
}
void assertTxnRecordStartOpTime(boost::optional<repl::OpTime> startOpTime) {
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << session()->getSessionId().toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << session()->getSessionId().toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(cursor->more());
diff --git a/src/mongo/db/persistent_task_store.h b/src/mongo/db/persistent_task_store.h
index 34ae3164004..9db4a12186b 100644
--- a/src/mongo/db/persistent_task_store.h
+++ b/src/mongo/db/persistent_task_store.h
@@ -141,7 +141,9 @@ public:
std::function<bool(const T&)> handler) {
DBDirectClient dbClient(opCtx);
- auto cursor = dbClient.query(_storageNss, filter);
+ FindCommandRequest findRequest{_storageNss};
+ findRequest.setFilter(filter);
+ auto cursor = dbClient.find(std::move(findRequest));
while (cursor->more()) {
auto bson = cursor->next();
@@ -159,8 +161,10 @@ public:
size_t count(OperationContext* opCtx, const BSONObj& filter = BSONObj{}) {
DBDirectClient client(opCtx);
- auto projection = BSON("_id" << 1);
- auto cursor = client.query(_storageNss, filter, Query(), 0, 0, &projection);
+ FindCommandRequest findRequest{_storageNss};
+ findRequest.setFilter(filter);
+ findRequest.setProjection(BSON("_id" << 1));
+ auto cursor = client.find(std::move(findRequest));
return cursor->itcount();
}
diff --git a/src/mongo/db/repl/apply_ops.cpp b/src/mongo/db/repl/apply_ops.cpp
index 50d012ab6c8..65b533ba218 100644
--- a/src/mongo/db/repl/apply_ops.cpp
+++ b/src/mongo/db/repl/apply_ops.cpp
@@ -291,7 +291,8 @@ Status _checkPrecondition(OperationContext* opCtx,
// legacy API from 'DBDirectClient' in order to parse this format and convert it into the
// corresponding find command.
auto preconditionQuery = Query::fromBSONDeprecated(preCondition["q"].Obj());
- auto cursor = db.query(nss, preconditionQuery.getFilter(), preconditionQuery, 1 /*limit*/);
+ auto cursor =
+ db.query_DEPRECATED(nss, preconditionQuery.getFilter(), preconditionQuery, 1 /*limit*/);
BSONObj realres = cursor->more() ? cursor->nextSafe() : BSONObj{};
// Get collection default collation.
diff --git a/src/mongo/db/repl/collection_cloner.cpp b/src/mongo/db/repl/collection_cloner.cpp
index 00c817a5b32..08701e697f6 100644
--- a/src/mongo/db/repl/collection_cloner.cpp
+++ b/src/mongo/db/repl/collection_cloner.cpp
@@ -339,15 +339,16 @@ void CollectionCloner::runQuery() {
_firstBatchOfQueryRound = true;
try {
- getClient()->query([this](DBClientCursorBatchIterator& iter) { handleNextBatch(iter); },
- _sourceDbAndUuid,
- BSONObj{},
- query,
- nullptr /* fieldsToReturn */,
- QueryOption_NoCursorTimeout | QueryOption_SecondaryOk |
- (collectionClonerUsesExhaust ? QueryOption_Exhaust : 0),
- _collectionClonerBatchSize,
- ReadConcernArgs::kImplicitDefault);
+ getClient()->query_DEPRECATED(
+ [this](DBClientCursorBatchIterator& iter) { handleNextBatch(iter); },
+ _sourceDbAndUuid,
+ BSONObj{},
+ query,
+ nullptr /* fieldsToReturn */,
+ QueryOption_NoCursorTimeout | QueryOption_SecondaryOk |
+ (collectionClonerUsesExhaust ? QueryOption_Exhaust : 0),
+ _collectionClonerBatchSize,
+ ReadConcernArgs::kImplicitDefault);
} catch (...) {
auto status = exceptionToStatus();
diff --git a/src/mongo/db/repl/oplog_interface_remote.cpp b/src/mongo/db/repl/oplog_interface_remote.cpp
index 1a9e3e6a180..45e9e3df190 100644
--- a/src/mongo/db/repl/oplog_interface_remote.cpp
+++ b/src/mongo/db/repl/oplog_interface_remote.cpp
@@ -81,18 +81,13 @@ std::string OplogInterfaceRemote::toString() const {
}
std::unique_ptr<OplogInterface::Iterator> OplogInterfaceRemote::makeIterator() const {
- const Query query = Query().sort(BSON("$natural" << -1));
- const BSONObj fields = BSON("ts" << 1 << "t" << 1LL);
+ FindCommandRequest findRequest{NamespaceString{_collectionName}};
+ findRequest.setProjection(BSON("ts" << 1 << "t" << 1LL));
+ findRequest.setSort(BSON("$natural" << -1));
+ findRequest.setBatchSize(_batchSize);
+ findRequest.setReadConcern(ReadConcernArgs::kImplicitDefault);
return std::unique_ptr<OplogInterface::Iterator>(
- new OplogIteratorRemote(_getConnection()->query(NamespaceString(_collectionName),
- BSONObj{},
- query,
- 0,
- 0,
- &fields,
- 0,
- _batchSize,
- ReadConcernArgs::kImplicitDefault)));
+ new OplogIteratorRemote(_getConnection()->find(std::move(findRequest))));
}
std::unique_ptr<TransactionHistoryIteratorBase>
diff --git a/src/mongo/db/repl/primary_only_service.cpp b/src/mongo/db/repl/primary_only_service.cpp
index 55b6490470f..485f08028d1 100644
--- a/src/mongo/db/repl/primary_only_service.cpp
+++ b/src/mongo/db/repl/primary_only_service.cpp
@@ -667,7 +667,8 @@ void PrimaryOnlyService::_rebuildInstances(long long term) noexcept {
Status(ErrorCodes::InternalError, "Querying state documents failed"));
}
- auto cursor = client.query(ns, BSONObj{});
+ FindCommandRequest findRequest{ns};
+ auto cursor = client.find(std::move(findRequest));
while (cursor->more()) {
stateDocuments.push_back(cursor->nextSafe().getOwned());
}
diff --git a/src/mongo/db/repl/replication_recovery.cpp b/src/mongo/db/repl/replication_recovery.cpp
index 84323838172..afecf8da4f5 100644
--- a/src/mongo/db/repl/replication_recovery.cpp
+++ b/src/mongo/db/repl/replication_recovery.cpp
@@ -144,14 +144,9 @@ public:
BSONObj predicate = _oplogApplicationEndPoint
? BSON("$gte" << _oplogApplicationStartPoint << "$lte" << *_oplogApplicationEndPoint)
: BSON("$gte" << _oplogApplicationStartPoint);
- _cursor = _client->query(NamespaceString::kRsOplogNamespace,
- BSON("ts" << predicate),
- /*querySettings*/ Query(),
- /*limit*/ 0,
- /*skip*/ 0,
- /*projection*/ nullptr,
- /*options*/ 0,
- /*batchSize*/ 0);
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("ts" << predicate));
+ _cursor = _client->find(std::move(findRequest));
// Check that the first document matches our appliedThrough point then skip it since it's
// already been applied.
diff --git a/src/mongo/db/repl/roll_back_local_operations_test.cpp b/src/mongo/db/repl/roll_back_local_operations_test.cpp
index 6a4b3ea84c9..16e0ccdd678 100644
--- a/src/mongo/db/repl/roll_back_local_operations_test.cpp
+++ b/src/mongo/db/repl/roll_back_local_operations_test.cpp
@@ -318,28 +318,18 @@ class DBClientConnectionForTest : public DBClientConnection {
public:
DBClientConnectionForTest(int numInitFailures) : _initFailuresLeft(numInitFailures) {}
- using DBClientConnection::query;
-
- std::unique_ptr<DBClientCursor> query(const NamespaceStringOrUUID& nsOrUuid,
- const BSONObj& filter,
- const Query& querySettings,
- int limit,
- int nToSkip,
- const BSONObj* fieldsToReturn,
- int queryOptions,
- int batchSize,
- boost::optional<BSONObj> readConcernObj) override {
+ std::unique_ptr<DBClientCursor> find(FindCommandRequest findRequest,
+ const ReadPreferenceSetting& readPref) override {
if (_initFailuresLeft > 0) {
_initFailuresLeft--;
LOGV2(21657,
- "Throwing DBException on DBClientCursorForTest::query(). Failures left: "
- "{initFailuresLeft}",
+ "Throwing DBException on DBClientCursorForTest::find()",
"initFailuresLeft"_attr = _initFailuresLeft);
uasserted(50852, "Simulated network error");
MONGO_UNREACHABLE;
}
- LOGV2(21658, "Returning success on DBClientCursorForTest::query()");
+ LOGV2(21658, "Returning success on DBClientCursorForTest::find()");
BSONArrayBuilder builder;
builder.append(makeOp(1));
diff --git a/src/mongo/db/repl/rollback_impl.cpp b/src/mongo/db/repl/rollback_impl.cpp
index a03e6793ea0..70d2bb88940 100644
--- a/src/mongo/db/repl/rollback_impl.cpp
+++ b/src/mongo/db/repl/rollback_impl.cpp
@@ -475,12 +475,13 @@ void RollbackImpl::_restoreTxnsTableEntryFromRetryableWrites(OperationContext* o
const auto filterFromMigration = BSON("op"
<< "n"
<< "fromMigrate" << true);
- auto cursor = client->query(
- NamespaceString::kRsOplogNamespace,
- BSON("ts" << BSON("$gt" << stableTimestamp) << "txnNumber" << BSON("$exists" << true)
- << "stmtId" << BSON("$exists" << true) << "prevOpTime.ts"
- << BSON("$gte" << Timestamp(1, 0) << "$lte" << stableTimestamp) << "$or"
- << BSON_ARRAY(filter << filterFromMigration)));
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("ts" << BSON("$gt" << stableTimestamp) << "txnNumber"
+ << BSON("$exists" << true) << "stmtId"
+ << BSON("$exists" << true) << "prevOpTime.ts"
+ << BSON("$gte" << Timestamp(1, 0) << "$lte" << stableTimestamp)
+ << "$or" << BSON_ARRAY(filter << filterFromMigration)));
+ auto cursor = client->find(std::move(findRequest));
while (cursor->more()) {
auto doc = cursor->next();
auto swEntry = OplogEntry::parse(doc);
diff --git a/src/mongo/db/repl/rollback_source_impl.cpp b/src/mongo/db/repl/rollback_source_impl.cpp
index f174d3c718c..4b7c7e2fff1 100644
--- a/src/mongo/db/repl/rollback_source_impl.cpp
+++ b/src/mongo/db/repl/rollback_source_impl.cpp
@@ -85,7 +85,19 @@ BSONObj RollbackSourceImpl::findOne(const NamespaceString& nss, const BSONObj& f
std::pair<BSONObj, NamespaceString> RollbackSourceImpl::findOneByUUID(const std::string& db,
UUID uuid,
const BSONObj& filter) const {
- return _getConnection()->findOneByUUID(db, uuid, filter, ReadConcernArgs::kImplicitDefault);
+ FindCommandRequest findRequest{NamespaceStringOrUUID{db, uuid}};
+ findRequest.setFilter(filter);
+ findRequest.setReadConcern(ReadConcernArgs::kImplicitDefault);
+ findRequest.setLimit(1);
+ findRequest.setSingleBatch(true);
+
+ auto cursor =
+ std::make_unique<DBClientCursor>(_getConnection(),
+ std::move(findRequest),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred});
+ BSONObj result = cursor->more() ? cursor->nextSafe() : BSONObj{};
+ NamespaceString nss = cursor->getNamespaceString();
+ return {std::move(result), std::move(nss)};
}
StatusWith<BSONObj> RollbackSourceImpl::getCollectionInfoByUUID(const std::string& db,
diff --git a/src/mongo/db/repl/tenant_collection_cloner.cpp b/src/mongo/db/repl/tenant_collection_cloner.cpp
index c468a466db5..4e391644b5a 100644
--- a/src/mongo/db/repl/tenant_collection_cloner.cpp
+++ b/src/mongo/db/repl/tenant_collection_cloner.cpp
@@ -210,17 +210,13 @@ BaseCloner::AfterStageBehavior TenantCollectionCloner::countStage() {
// Note we cannot simply use the count() above, because that checks metadata which may not be 100%
// accurate.
BaseCloner::AfterStageBehavior TenantCollectionCloner::checkIfDonorCollectionIsEmptyStage() {
- auto fieldsToReturn = BSON("_id" << 1);
- auto cursor =
- getClient()->query(_sourceDbAndUuid,
- BSONObj{} /* filter */,
- Query() /* querySettings */,
- 1 /* limit */,
- 0 /* skip */,
- &fieldsToReturn,
- QueryOption_SecondaryOk,
- 0 /* batchSize */,
- ReadConcernArgs(ReadConcernLevel::kMajorityReadConcern).toBSONInner());
+ FindCommandRequest findRequest{_sourceDbAndUuid};
+ findRequest.setProjection(BSON("_id" << 1));
+ findRequest.setLimit(1);
+ findRequest.setReadConcern(
+ ReadConcernArgs(ReadConcernLevel::kMajorityReadConcern).toBSONInner());
+ auto cursor = getClient()->find(std::move(findRequest),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred});
_donorCollectionWasEmptyBeforeListIndexes = !cursor->more();
LOGV2_DEBUG(5368500,
1,
@@ -480,15 +476,16 @@ void TenantCollectionCloner::runQuery() {
// Any errors that are thrown here (including NamespaceNotFound) will be handled on the stage
// level.
- getClient()->query([this](DBClientCursorBatchIterator& iter) { handleNextBatch(iter); },
- _sourceDbAndUuid,
- filter,
- query,
- nullptr /* fieldsToReturn */,
- QueryOption_NoCursorTimeout | QueryOption_SecondaryOk |
- (collectionClonerUsesExhaust ? QueryOption_Exhaust : 0),
- _collectionClonerBatchSize,
- ReadConcernArgs(ReadConcernLevel::kMajorityReadConcern).toBSONInner());
+ getClient()->query_DEPRECATED(
+ [this](DBClientCursorBatchIterator& iter) { handleNextBatch(iter); },
+ _sourceDbAndUuid,
+ filter,
+ query,
+ nullptr /* fieldsToReturn */,
+ QueryOption_NoCursorTimeout | QueryOption_SecondaryOk |
+ (collectionClonerUsesExhaust ? QueryOption_Exhaust : 0),
+ _collectionClonerBatchSize,
+ ReadConcernArgs(ReadConcernLevel::kMajorityReadConcern).toBSONInner());
}
void TenantCollectionCloner::handleNextBatch(DBClientCursorBatchIterator& iter) {
diff --git a/src/mongo/db/repl/tenant_migration_recipient_service.cpp b/src/mongo/db/repl/tenant_migration_recipient_service.cpp
index 700f33d6972..6911f5509ba 100644
--- a/src/mongo/db/repl/tenant_migration_recipient_service.cpp
+++ b/src/mongo/db/repl/tenant_migration_recipient_service.cpp
@@ -2229,10 +2229,8 @@ SemiFuture<void> TenantMigrationRecipientService::Instance::_updateStateDocForMa
void TenantMigrationRecipientService::Instance::_fetchAndStoreDonorClusterTimeKeyDocs(
const CancellationToken& token) {
std::vector<ExternalKeysCollectionDocument> keyDocs;
- auto cursor =
- _client->query(NamespaceString::kKeysCollectionNamespace,
- BSONObj{},
- Query().readPref(_readPreference.pref, _readPreference.tags.getTagBSON()));
+ FindCommandRequest findRequest{NamespaceString::kKeysCollectionNamespace};
+ auto cursor = _client->find(std::move(findRequest), _readPreference);
while (cursor->more()) {
const auto doc = cursor->nextSafe().getOwned();
keyDocs.push_back(
diff --git a/src/mongo/db/repl/transaction_oplog_application.cpp b/src/mongo/db/repl/transaction_oplog_application.cpp
index a838e8566f6..a44f8380f1c 100644
--- a/src/mongo/db/repl/transaction_oplog_application.cpp
+++ b/src/mongo/db/repl/transaction_oplog_application.cpp
@@ -574,9 +574,10 @@ void reconstructPreparedTransactions(OperationContext* opCtx, repl::OplogApplica
opCtx->recoveryUnit()->getTimestampReadSource());
DBDirectClient client(opCtx);
- const auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("state"
- << "prepared"));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("state"
+ << "prepared"));
+ const auto cursor = client.find(std::move(findRequest));
// Iterate over each entry in the transactions table that has a prepared transaction.
while (cursor->more()) {
diff --git a/src/mongo/db/rs_local_client.cpp b/src/mongo/db/rs_local_client.cpp
index 6fdc49907f3..65cf9a284fa 100644
--- a/src/mongo/db/rs_local_client.cpp
+++ b/src/mongo/db/rs_local_client.cpp
@@ -139,18 +139,20 @@ StatusWith<Shard::QueryResponse> RSLocalClient::queryOnce(
}
DBDirectClient client(opCtx);
- Query querySettings;
+ FindCommandRequest findRequest{nss};
+ findRequest.setFilter(query);
if (!sort.isEmpty()) {
- querySettings.sort(sort);
+ findRequest.setSort(sort);
}
if (hint) {
- querySettings.hint(*hint);
+ findRequest.setHint(*hint);
+ }
+ if (limit) {
+ findRequest.setLimit(*limit);
}
- querySettings.readPref(readPref.pref, BSONArray());
try {
- std::unique_ptr<DBClientCursor> cursor =
- client.query(nss, query, querySettings, limit.get_value_or(0));
+ std::unique_ptr<DBClientCursor> cursor = client.find(std::move(findRequest), readPref);
if (!cursor) {
return {ErrorCodes::OperationFailed,
diff --git a/src/mongo/db/s/balancer/balancer_commands_scheduler_impl.cpp b/src/mongo/db/s/balancer/balancer_commands_scheduler_impl.cpp
index 3d98bcb8499..41e4269e295 100644
--- a/src/mongo/db/s/balancer/balancer_commands_scheduler_impl.cpp
+++ b/src/mongo/db/s/balancer/balancer_commands_scheduler_impl.cpp
@@ -121,7 +121,8 @@ std::vector<RequestData> rebuildRequestsFromRecoveryInfo(
};
DBDirectClient dbClient(opCtx);
try {
- dbClient.query(documentProcessor, MigrationType::ConfigNS, BSONObj());
+ FindCommandRequest findRequest{MigrationType::ConfigNS};
+ dbClient.find(std::move(findRequest), ReadPreferenceSetting{}, documentProcessor);
} catch (const DBException& e) {
LOGV2_ERROR(5847215, "Failed to load requests to recover", "error"_attr = redact(e));
}
diff --git a/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp b/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp
index 2446042021c..206f40f870a 100644
--- a/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp
+++ b/src/mongo/db/s/balancer/balancer_defragmentation_policy_test.cpp
@@ -100,9 +100,9 @@ protected:
BSONObj getConfigCollectionEntry() {
DBDirectClient client(operationContext());
- auto cursor = client.query(NamespaceStringOrUUID(CollectionType::ConfigNS),
- BSON(CollectionType::kUuidFieldName << kUuid),
- {});
+ FindCommandRequest findRequest{NamespaceStringOrUUID{CollectionType::ConfigNS}};
+ findRequest.setFilter(BSON(CollectionType::kUuidFieldName << kUuid));
+ auto cursor = client.find(std::move(findRequest));
if (!cursor || !cursor->more())
return BSONObj();
else
diff --git a/src/mongo/db/s/persistent_task_queue.h b/src/mongo/db/s/persistent_task_queue.h
index 25736e6d6ba..0c7e873786d 100644
--- a/src/mongo/db/s/persistent_task_queue.h
+++ b/src/mongo/db/s/persistent_task_queue.h
@@ -109,8 +109,9 @@ PersistentTaskQueue<T>::PersistentTaskQueue(OperationContext* opCtx, NamespaceSt
DBDirectClient client(opCtx);
- auto projection = BSON("_id" << 1);
- auto cursor = client.query(_storageNss, BSONObj{}, Query(), 0, 0, &projection);
+ FindCommandRequest findRequest{_storageNss};
+ findRequest.setProjection(BSON("_id" << 1));
+ auto cursor = client.find(std::move(findRequest));
_count = cursor->itcount();
if (_count > 0)
diff --git a/src/mongo/db/s/recoverable_critical_section_service.cpp b/src/mongo/db/s/recoverable_critical_section_service.cpp
index 9864779bf31..dbfcd529035 100644
--- a/src/mongo/db/s/recoverable_critical_section_service.cpp
+++ b/src/mongo/db/s/recoverable_critical_section_service.cpp
@@ -85,9 +85,10 @@ void RecoverableCriticalSectionService::acquireRecoverableCriticalSectionBlockWr
AutoGetCollection cCollLock(opCtx, nss, MODE_S);
DBDirectClient dbClient(opCtx);
- auto cursor = dbClient.query(
- NamespaceString::kCollectionCriticalSectionsNamespace,
+ FindCommandRequest findRequest{NamespaceString::kCollectionCriticalSectionsNamespace};
+ findRequest.setFilter(
BSON(CollectionCriticalSectionDocument::kNssFieldName << nss.toString()));
+ auto cursor = dbClient.find(std::move(findRequest));
// if there is a doc with the same nss -> in order to not fail it must have the same reason
if (cursor->more()) {
@@ -170,9 +171,10 @@ void RecoverableCriticalSectionService::promoteRecoverableCriticalSectionToBlock
AutoGetCollection cCollLock(opCtx, nss, MODE_X);
DBDirectClient dbClient(opCtx);
- auto cursor = dbClient.query(
- NamespaceString::kCollectionCriticalSectionsNamespace,
+ FindCommandRequest findRequest{NamespaceString::kCollectionCriticalSectionsNamespace};
+ findRequest.setFilter(
BSON(CollectionCriticalSectionDocument::kNssFieldName << nss.toString()));
+ auto cursor = dbClient.find(std::move(findRequest));
invariant(
cursor->more(),
@@ -272,8 +274,9 @@ void RecoverableCriticalSectionService::releaseRecoverableCriticalSection(
const auto queryNss =
BSON(CollectionCriticalSectionDocument::kNssFieldName << nss.toString());
- auto cursor =
- dbClient.query(NamespaceString::kCollectionCriticalSectionsNamespace, queryNss);
+ FindCommandRequest findRequest{NamespaceString::kCollectionCriticalSectionsNamespace};
+ findRequest.setFilter(queryNss);
+ auto cursor = dbClient.find(std::move(findRequest));
// if there is no document with the same nss -> do nothing!
if (!cursor->more()) {
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp b/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
index 06231a28ae2..5d1ff6ef471 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
@@ -862,9 +862,10 @@ TEST_F(ReshardingCoordinatorServiceTest, StepDownStepUpEachTransition) {
DBDirectClient client(opCtx);
// config.chunks should have been moved to the new UUID
+ FindCommandRequest findRequest{ChunkType::ConfigNS};
+ findRequest.setFilter(BSON(ChunkType::collectionUUID() << doc.getReshardingUUID()));
+ auto chunkCursor = client.find(std::move(findRequest));
std::vector<ChunkType> foundChunks;
- auto chunkCursor = client.query(
- ChunkType::ConfigNS, BSON(ChunkType::collectionUUID() << doc.getReshardingUUID()));
while (chunkCursor->more()) {
auto d = uassertStatusOK(ChunkType::fromConfigBSON(
chunkCursor->nextSafe().getOwned(), _originalEpoch, _originalTimestamp));
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_test.cpp b/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
index 9116e731841..a1ef35222f3 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
@@ -422,8 +422,11 @@ protected:
const OID& collEpoch,
const Timestamp& collTimestamp) {
DBDirectClient client(opCtx);
+ FindCommandRequest findRequest{ChunkType::ConfigNS};
+ findRequest.setFilter(BSON("uuid" << uuid));
+ auto cursor = client.find(std::move(findRequest));
+
std::vector<ChunkType> foundChunks;
- auto cursor = client.query(ChunkType::ConfigNS, BSON("uuid" << uuid));
while (cursor->more()) {
auto d = uassertStatusOK(
ChunkType::fromConfigBSON(cursor->nextSafe().getOwned(), collEpoch, collTimestamp));
@@ -448,8 +451,11 @@ protected:
auto nss = expectedZones[0].getNS();
DBDirectClient client(opCtx);
+ FindCommandRequest findRequest{TagsType::ConfigNS};
+ findRequest.setFilter(BSON("ns" << nss.ns()));
+ auto cursor = client.find(std::move(findRequest));
+
std::vector<TagsType> foundZones;
- auto cursor = client.query(TagsType::ConfigNS, BSON("ns" << nss.ns()));
while (cursor->more()) {
foundZones.push_back(
uassertStatusOK(TagsType::fromBSON(cursor->nextSafe().getOwned())));
diff --git a/src/mongo/db/s/resharding/resharding_donor_service_test.cpp b/src/mongo/db/s/resharding/resharding_donor_service_test.cpp
index 47e35c202e7..2359d85009a 100644
--- a/src/mongo/db/s/resharding/resharding_donor_service_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_donor_service_test.cpp
@@ -269,8 +269,9 @@ TEST_F(ReshardingDonorServiceTest, WritesNoOpOplogEntryOnReshardingBegin) {
DBDirectClient client(opCtx.get());
NamespaceString sourceNss("sourcedb", "sourcecollection");
- auto cursor = client.query(NamespaceString(NamespaceString::kRsOplogNamespace.ns()),
- BSON("ns" << sourceNss.toString()));
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("ns" << sourceNss.toString()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT_TRUE(cursor->more()) << "Found no oplog entries for source collection";
repl::OplogEntry op(cursor->next());
@@ -308,9 +309,9 @@ TEST_F(ReshardingDonorServiceTest, WritesNoOpOplogEntryToGenerateMinFetchTimesta
ErrorCodes::InterruptedDueToReplStateChange);
DBDirectClient client(opCtx.get());
- auto cursor =
- client.query(NamespaceString(NamespaceString::kRsOplogNamespace.ns()),
- BSON("ns" << NamespaceString::kForceOplogBatchBoundaryNamespace.ns()));
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("ns" << NamespaceString::kForceOplogBatchBoundaryNamespace.ns()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT_TRUE(cursor->more()) << "Found no oplog entries for source collection";
repl::OplogEntry op(cursor->next());
@@ -345,8 +346,9 @@ TEST_F(ReshardingDonorServiceTest, WritesFinalReshardOpOplogEntriesWhileWritesBl
ErrorCodes::InterruptedDueToReplStateChange);
DBDirectClient client(opCtx.get());
- auto cursor = client.query(NamespaceString(NamespaceString::kRsOplogNamespace.ns()),
- BSON("o2.type" << kReshardFinalOpLogType));
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("o2.type" << kReshardFinalOpLogType));
+ auto cursor = client.find(std::move(findRequest));
ASSERT_TRUE(cursor->more()) << "Found no oplog entries for source collection";
diff --git a/src/mongo/db/s/resharding/resharding_recipient_service_test.cpp b/src/mongo/db/s/resharding/resharding_recipient_service_test.cpp
index 22a9840a450..43ccab32bec 100644
--- a/src/mongo/db/s/resharding/resharding_recipient_service_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_recipient_service_test.cpp
@@ -621,8 +621,9 @@ TEST_F(ReshardingRecipientServiceTest, WritesNoopOplogEntryOnReshardDoneCatchUp)
DBDirectClient client(opCtx.get());
NamespaceString sourceNss = constructTemporaryReshardingNss("sourcedb", doc.getSourceUUID());
- auto cursor = client.query(NamespaceString(NamespaceString::kRsOplogNamespace.ns()),
- BSON("ns" << sourceNss.toString()));
+ FindCommandRequest findRequest{NamespaceString::kRsOplogNamespace};
+ findRequest.setFilter(BSON("ns" << sourceNss.toString()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT_TRUE(cursor->more()) << "Found no oplog entries for source collection";
repl::OplogEntry op(cursor->next());
diff --git a/src/mongo/db/s/session_catalog_migration_source.cpp b/src/mongo/db/s/session_catalog_migration_source.cpp
index 31f006da764..746fa785d77 100644
--- a/src/mongo/db/s/session_catalog_migration_source.cpp
+++ b/src/mongo/db/s/session_catalog_migration_source.cpp
@@ -193,9 +193,9 @@ SessionCatalogMigrationSource::SessionCatalogMigrationSource(OperationContext* o
// Sort is not needed for correctness. This is just for making it easier to write deterministic
// tests.
DBDirectClient client(opCtx);
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSONObj{},
- Query().sort(BSON("_id" << 1)));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setSort(BSON("_id" << 1));
+ auto cursor = client.find(std::move(findRequest));
while (cursor->more()) {
auto nextSession = SessionTxnRecord::parse(
diff --git a/src/mongo/db/s/shard_metadata_util.cpp b/src/mongo/db/s/shard_metadata_util.cpp
index fe9e22f715b..fa829fe2270 100644
--- a/src/mongo/db/s/shard_metadata_util.cpp
+++ b/src/mongo/db/s/shard_metadata_util.cpp
@@ -162,11 +162,10 @@ StatusWith<ShardCollectionType> readShardCollectionsEntry(OperationContext* opCt
try {
DBDirectClient client(opCtx);
- std::unique_ptr<DBClientCursor> cursor =
- client.query(NamespaceString::kShardConfigCollectionsNamespace,
- BSON(ShardCollectionType::kNssFieldName << nss.ns()),
- Query(),
- 1);
+ FindCommandRequest findRequest{NamespaceString::kShardConfigCollectionsNamespace};
+ findRequest.setFilter(BSON(ShardCollectionType::kNssFieldName << nss.ns()));
+ findRequest.setLimit(1);
+ std::unique_ptr<DBClientCursor> cursor = client.find(std::move(findRequest));
if (!cursor) {
return Status(ErrorCodes::OperationFailed,
str::stream() << "Failed to establish a cursor for reading "
@@ -191,11 +190,10 @@ StatusWith<ShardCollectionType> readShardCollectionsEntry(OperationContext* opCt
StatusWith<ShardDatabaseType> readShardDatabasesEntry(OperationContext* opCtx, StringData dbName) {
try {
DBDirectClient client(opCtx);
- std::unique_ptr<DBClientCursor> cursor =
- client.query(NamespaceString::kShardConfigDatabasesNamespace,
- BSON(ShardDatabaseType::name() << dbName.toString()),
- Query(),
- 1);
+ FindCommandRequest findRequest{NamespaceString::kShardConfigDatabasesNamespace};
+ findRequest.setFilter(BSON(ShardDatabaseType::name() << dbName.toString()));
+ findRequest.setLimit(1);
+ std::unique_ptr<DBClientCursor> cursor = client.find(std::move(findRequest));
if (!cursor) {
return Status(ErrorCodes::OperationFailed,
str::stream() << "Failed to establish a cursor for reading "
@@ -313,8 +311,13 @@ StatusWith<std::vector<ChunkType>> readShardChunks(OperationContext* opCtx,
try {
DBDirectClient client(opCtx);
- std::unique_ptr<DBClientCursor> cursor =
- client.query(chunksNss, query, Query().sort(sort), limit.get_value_or(0));
+ FindCommandRequest findRequest{chunksNss};
+ findRequest.setFilter(query);
+ findRequest.setSort(sort);
+ if (limit) {
+ findRequest.setLimit(*limit);
+ }
+ std::unique_ptr<DBClientCursor> cursor = client.find(std::move(findRequest));
uassert(ErrorCodes::OperationFailed,
str::stream() << "Failed to establish a cursor for reading " << chunksNss.ns()
<< " from local storage",
diff --git a/src/mongo/db/s/shard_metadata_util_test.cpp b/src/mongo/db/s/shard_metadata_util_test.cpp
index bfd1b812f27..7effa87f13c 100644
--- a/src/mongo/db/s/shard_metadata_util_test.cpp
+++ b/src/mongo/db/s/shard_metadata_util_test.cpp
@@ -141,12 +141,13 @@ struct ShardMetadataUtilTest : public ShardServerTestFixture {
DBDirectClient client(operationContext());
for (auto& chunk : chunks) {
NamespaceString chunkMetadataNss{ChunkType::ShardNSPrefix + uuid.toString()};
- std::unique_ptr<DBClientCursor> cursor =
- client.query(chunkMetadataNss,
- BSON(ChunkType::minShardID()
- << chunk.getMin() << ChunkType::max() << chunk.getMax()),
- Query().readPref(ReadPreference::Nearest, BSONArray()),
- 1);
+ FindCommandRequest findRequest{chunkMetadataNss};
+ findRequest.setFilter(BSON(ChunkType::minShardID()
+ << chunk.getMin() << ChunkType::max()
+ << chunk.getMax()));
+ findRequest.setLimit(1);
+ std::unique_ptr<DBClientCursor> cursor = client.find(
+ std::move(findRequest), ReadPreferenceSetting{ReadPreference::Nearest});
ASSERT(cursor);
ASSERT(cursor->more());
diff --git a/src/mongo/db/s/sharding_ddl_util_test.cpp b/src/mongo/db/s/sharding_ddl_util_test.cpp
index 052f683fbec..eacd1372f5f 100644
--- a/src/mongo/db/s/sharding_ddl_util_test.cpp
+++ b/src/mongo/db/s/sharding_ddl_util_test.cpp
@@ -82,21 +82,12 @@ const NamespaceString kToNss("test.to");
// Query 'limit' objects from the database into an array.
void findN(DBClientBase& client,
- const std::string& ns,
- const BSONObj& filter,
- const Query& querySettings,
+ FindCommandRequest findRequest,
int limit,
std::vector<BSONObj>& out) {
out.reserve(limit);
- std::unique_ptr<DBClientCursor> c = client.query(NamespaceString(ns),
- filter,
- querySettings,
- limit,
- 0 /*nToSkip*/,
- nullptr /*fieldsToReturn*/,
- 0 /*queryOptions*/,
- 0 /* batchSize */,
- boost::none);
+ findRequest.setLimit(limit);
+ std::unique_ptr<DBClientCursor> c = client.find(std::move(findRequest));
ASSERT(c.get());
while (c->more()) {
@@ -158,13 +149,13 @@ TEST_F(ShardingDDLUtilTest, ShardedRenameMetadata) {
// Get FROM collection document and chunks
auto fromDoc = client.findOne(CollectionType::ConfigNS, fromCollQuery);
CollectionType fromCollection(fromDoc);
+
+ FindCommandRequest fromChunksRequest{ChunkType::ConfigNS};
+ fromChunksRequest.setFilter(BSON(ChunkType::collectionUUID << collUUID));
+ fromChunksRequest.setSort(BSON("_id" << 1));
+
std::vector<BSONObj> fromChunks;
- findN(client,
- ChunkType::ConfigNS.ns(),
- BSON(ChunkType::collectionUUID << collUUID) /*filter*/,
- Query().sort(BSON("_id" << 1)),
- nChunks,
- fromChunks);
+ findN(client, std::move(fromChunksRequest), nChunks, fromChunks);
auto fromCollType = Grid::get(opCtx)->catalogClient()->getCollection(opCtx, fromNss);
// Perform the metadata rename
@@ -177,13 +168,13 @@ TEST_F(ShardingDDLUtilTest, ShardedRenameMetadata) {
// Get TO collection document and chunks
auto toDoc = client.findOne(CollectionType::ConfigNS, toCollQuery);
CollectionType toCollection(toDoc);
+
+ FindCommandRequest toChunksRequest{ChunkType::ConfigNS};
+ toChunksRequest.setFilter(BSON(ChunkType::collectionUUID << collUUID));
+ toChunksRequest.setSort(BSON("_id" << 1));
+
std::vector<BSONObj> toChunks;
- findN(client,
- ChunkType::ConfigNS.ns(),
- BSON(ChunkType::collectionUUID << collUUID) /*filter*/,
- Query().sort(BSON("_id" << 1)),
- nChunks,
- toChunks);
+ findN(client, std::move(toChunksRequest), nChunks, toChunks);
// Check that original epoch/timestamp are changed in config.collections entry
ASSERT(fromCollection.getEpoch() != toCollection.getEpoch());
diff --git a/src/mongo/db/s/transaction_coordinator_util.cpp b/src/mongo/db/s/transaction_coordinator_util.cpp
index cce0095f044..7132b090f24 100644
--- a/src/mongo/db/s/transaction_coordinator_util.cpp
+++ b/src/mongo/db/s/transaction_coordinator_util.cpp
@@ -650,8 +650,8 @@ std::vector<TransactionCoordinatorDocument> readAllCoordinatorDocs(OperationCont
std::vector<TransactionCoordinatorDocument> allCoordinatorDocs;
DBDirectClient client(opCtx);
- auto coordinatorDocsCursor =
- client.query(NamespaceString::kTransactionCoordinatorsNamespace, BSONObj{});
+ FindCommandRequest findRequest{NamespaceString::kTransactionCoordinatorsNamespace};
+ auto coordinatorDocsCursor = client.find(std::move(findRequest));
while (coordinatorDocsCursor->more()) {
// TODO (SERVER-38307): Try/catch around parsing the document and skip the document if it
diff --git a/src/mongo/db/session_catalog_mongod.cpp b/src/mongo/db/session_catalog_mongod.cpp
index 1d9f6bdb586..937596991b3 100644
--- a/src/mongo/db/session_catalog_mongod.cpp
+++ b/src/mongo/db/session_catalog_mongod.cpp
@@ -260,9 +260,11 @@ void createRetryableFindAndModifyTable(OperationContext* opCtx) {
void abortInProgressTransactions(OperationContext* opCtx) {
DBDirectClient client(opCtx);
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON(SessionTxnRecord::kStateFieldName << DurableTxnState_serializer(
- DurableTxnStateEnum::kInProgress)));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON(SessionTxnRecord::kStateFieldName
+ << DurableTxnState_serializer(DurableTxnStateEnum::kInProgress)));
+ auto cursor = client.find(std::move(findRequest));
+
if (cursor->more()) {
LOGV2_DEBUG(21977, 3, "Aborting in-progress transactions on stepup.");
}
@@ -450,12 +452,11 @@ int MongoDSessionCatalog::reapSessionsOlderThan(OperationContext* opCtx,
// Scan for records older than the minimum lifetime and uses a sort to walk the '_id' index
DBDirectClient client(opCtx);
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON(kLastWriteDateFieldName << LT << possiblyExpired),
- Query().sort(kSortById),
- 0,
- 0,
- &kIdProjection);
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON(kLastWriteDateFieldName << LT << possiblyExpired));
+ findRequest.setSort(kSortById);
+ findRequest.setProjection(kIdProjection);
+ auto cursor = client.find(std::move(findRequest));
// The max batch size is chosen so that a single batch won't exceed the 16MB BSON object size
// limit
diff --git a/src/mongo/db/transaction_participant_retryable_writes_test.cpp b/src/mongo/db/transaction_participant_retryable_writes_test.cpp
index 508f1033814..d0349dbf092 100644
--- a/src/mongo/db/transaction_participant_retryable_writes_test.cpp
+++ b/src/mongo/db/transaction_participant_retryable_writes_test.cpp
@@ -259,8 +259,9 @@ protected:
const auto session = OperationContextSession::get(opCtx());
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << session->getSessionId().toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << session->getSessionId().toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(cursor->more());
@@ -298,8 +299,9 @@ TEST_F(TransactionParticipantRetryableWritesTest, SessionEntryNotWrittenOnBegin)
ASSERT(txnParticipant.getLastWriteOpTime().isNull());
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << sessionId.toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << sessionId.toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(!cursor->more());
}
@@ -316,8 +318,9 @@ TEST_F(TransactionParticipantRetryableWritesTest, SessionEntryWrittenAtFirstWrit
const auto opTime = writeTxnRecord(txnNum, {0}, {}, boost::none);
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << sessionId.toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << sessionId.toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(cursor->more());
@@ -342,8 +345,9 @@ TEST_F(TransactionParticipantRetryableWritesTest,
const auto secondOpTime = writeTxnRecord(200, {1}, firstOpTime, boost::none);
DBDirectClient client(opCtx());
- auto cursor = client.query(NamespaceString::kSessionTransactionsTableNamespace,
- BSON("_id" << sessionId.toBSON()));
+ FindCommandRequest findRequest{NamespaceString::kSessionTransactionsTableNamespace};
+ findRequest.setFilter(BSON("_id" << sessionId.toBSON()));
+ auto cursor = client.find(std::move(findRequest));
ASSERT(cursor);
ASSERT(cursor->more());