-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
v5.0
-
Sharding 2021-07-12
-
1
We should add a guard around the call to resharding::data_copy::fillBatchForInsert() to call Pipeline::dispose() if Pipeline::getNext() throws.
auto guard = makeGuard([&] { pipeline->dispose(opCtx); pipeline.reset() }); pipeline->reattachToOperationContext(opCtx); auto doc = pipeline->getNext(); pipeline->detachFromOperationContext(); guard.dismiss();
Note that this other call to Pipeline::getNext() doesn't an explicit guard to call Pipeline::dispose() because PipelineDeleter::dismissDisposal() hasn't been called yet.
- is related to
-
SERVER-56437 ReshardingDonorOplogIterator destroys OperationContext with Pipeline still attached on exception
- Closed
-
SERVER-57653 ReshardingDonorOplogIterator must call Pipeline::dispose() if Pipeline::getNext() throws
- Closed