summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/resharding/resharding_txn_cloner.cpp
diff options
context:
space:
mode:
authorLuis Osta <luis.osta@mongodb.com>2021-06-28 20:25:17 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-28 21:12:40 +0000
commit0e68f3ec099396bb26a121728915cc1efefb8002 (patch)
tree93188cf20a9ebd1da767b5d747d5bf6fe0496d15 /src/mongo/db/s/resharding/resharding_txn_cloner.cpp
parent7f54d6c00e647eac55e70debf4240a17f6eabb7a (diff)
downloadmongo-0e68f3ec099396bb26a121728915cc1efefb8002.tar.gz
SERVER-57655 Call Pipeline::dispose() if Pipeline::getNext() throws in ReshardingTxnCloner
Diffstat (limited to 'src/mongo/db/s/resharding/resharding_txn_cloner.cpp')
-rw-r--r--src/mongo/db/s/resharding/resharding_txn_cloner.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/db/s/resharding/resharding_txn_cloner.cpp b/src/mongo/db/s/resharding/resharding_txn_cloner.cpp
index 161c3ef9533..6337b852311 100644
--- a/src/mongo/db/s/resharding/resharding_txn_cloner.cpp
+++ b/src/mongo/db/s/resharding/resharding_txn_cloner.cpp
@@ -220,7 +220,12 @@ SemiFuture<void> ReshardingTxnCloner::run(
// due to a prepared transaction having been in progress.
if (!chainCtx->donorRecord) {
auto opCtx = factory.makeOperationContext(&cc());
+ auto guard = makeGuard([&] {
+ chainCtx->pipeline->dispose(opCtx.get());
+ chainCtx->pipeline.reset();
+ });
chainCtx->donorRecord = _getNextRecord(opCtx.get(), *chainCtx->pipeline);
+ guard.dismiss();
}
if (!chainCtx->donorRecord) {