summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/collection_bulk_loader_impl.h
diff options
context:
space:
mode:
authorScott Hernandez <scotthernandez@gmail.com>2016-09-02 09:39:06 -0400
committerScott Hernandez <scotthernandez@gmail.com>2016-09-06 09:35:53 -0400
commit815e16eace8c40db7eed5ad3a6902027f1212e2a (patch)
tree8f47ab82a54dec10710b76fcb6989980d224dab8 /src/mongo/db/repl/collection_bulk_loader_impl.h
parentb3aba5d4d12a86e18c13db259f64025e74445d3c (diff)
downloadmongo-815e16eace8c40db7eed5ad3a6902027f1212e2a.tar.gz
SERVER-25131: release collection/db locks on collection clone failure.
Diffstat (limited to 'src/mongo/db/repl/collection_bulk_loader_impl.h')
-rw-r--r--src/mongo/db/repl/collection_bulk_loader_impl.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mongo/db/repl/collection_bulk_loader_impl.h b/src/mongo/db/repl/collection_bulk_loader_impl.h
index 1fa6033a104..b66baeb2bae 100644
--- a/src/mongo/db/repl/collection_bulk_loader_impl.h
+++ b/src/mongo/db/repl/collection_bulk_loader_impl.h
@@ -84,6 +84,11 @@ public:
virtual BSONObj toBSON() const override;
private:
+ void _releaseResources();
+ Status _runTaskReleaseResourcesOnFailure(
+ TaskRunner::SynchronousTask task,
+ TaskRunner::NextAction nextAction = TaskRunner::NextAction::kKeepOperationContext);
+
std::unique_ptr<OldThreadPool> _threadPool;
std::unique_ptr<TaskRunner> _runner;
std::unique_ptr<AutoGetCollection> _autoColl;
@@ -91,9 +96,8 @@ private:
OperationContext* _txn = nullptr;
Collection* _coll = nullptr;
NamespaceString _nss;
- MultiIndexBlock _idIndexBlock;
- MultiIndexBlock _secondaryIndexesBlock;
- bool _hasSecondaryIndexes = false;
+ std::unique_ptr<MultiIndexBlock> _idIndexBlock;
+ std::unique_ptr<MultiIndexBlock> _secondaryIndexesBlock;
BSONObj _idIndexSpec;
Stats _stats;
};