From e32f3bc2b3fa959fb82be7f52502fc4619ec2ca2 Mon Sep 17 00:00:00 2001 From: Vishnu K Date: Thu, 21 May 2026 13:01:08 -0400 Subject: [PATCH] SERVER-126463 collection cloner function_ref memory bug (#54143) GitOrigin-RevId: af65c792309ba4db8677f1ccf8f5f20f94b984d7 --- src/mongo/db/repl/initial_sync/collection_cloner.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mongo/db/repl/initial_sync/collection_cloner.cpp b/src/mongo/db/repl/initial_sync/collection_cloner.cpp index 8ced3c00905..64cead5c1ae 100644 --- a/src/mongo/db/repl/initial_sync/collection_cloner.cpp +++ b/src/mongo/db/repl/initial_sync/collection_cloner.cpp @@ -562,11 +562,12 @@ void CollectionCloner::insertDocumentsCallback(const executor::TaskExecutor::Cal _progressMeter.hit(int(docs.size())); invariant(_collLoader); - CollectionBulkLoader::ParseRecordIdAndDocFunc fn = (_recordIdsReplicated) - ? ([](const BSONObj& doc) { - return std::make_pair(RecordId(doc["r"].Long()), doc["d"].Obj()); - }) - : ([](const BSONObj& doc) { return std::make_pair(RecordId(0), doc); }); + auto fn = [recordIdsReplicated = + _recordIdsReplicated](const BSONObj& doc) -> std::pair { + if (recordIdsReplicated) + return {RecordId(doc["r"].Long()), doc["d"].Obj()}; + return {RecordId(0), doc}; + }; // The insert must be done within the lock, because CollectionBulkLoader is not // thread safe. uassertStatusOK(_collLoader->insertDocuments(docs, fn));