summaryrefslogtreecommitdiff
path: root/src/mongo/db/db_raii.cpp
diff options
context:
space:
mode:
authorDianna Hohensee <dianna.hohensee@mongodb.com>2020-09-28 10:41:35 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-30 15:26:17 +0000
commit3b8dfefeb9809a826354460b653b9d964730a18a (patch)
tree83b8bd97c666f2797e5e46eeefa53af85198d5a3 /src/mongo/db/db_raii.cpp
parentcadb990e1ac4229bcf419f47c82656b6458faf8a (diff)
downloadmongo-3b8dfefeb9809a826354460b653b9d964730a18a.tar.gz
SERVER-51091 Rearrange AutoGetCollection templating and inheritance to have separate -LFR and non-LFR (lock-free read) lock helpers.
Diffstat (limited to 'src/mongo/db/db_raii.cpp')
-rw-r--r--src/mongo/db/db_raii.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/mongo/db/db_raii.cpp b/src/mongo/db/db_raii.cpp
index 7e2397f2521..7ffe40349ab 100644
--- a/src/mongo/db/db_raii.cpp
+++ b/src/mongo/db/db_raii.cpp
@@ -84,10 +84,12 @@ AutoStatsTracker::~AutoStatsTracker() {
curOp->getReadWriteType());
}
-AutoGetCollectionForRead::AutoGetCollectionForRead(OperationContext* opCtx,
- const NamespaceStringOrUUID& nsOrUUID,
- AutoGetCollectionViewMode viewMode,
- Date_t deadline) {
+template <typename AutoGetCollectionType>
+AutoGetCollectionForReadBase<AutoGetCollectionType>::AutoGetCollectionForReadBase(
+ OperationContext* opCtx,
+ const NamespaceStringOrUUID& nsOrUUID,
+ AutoGetCollectionViewMode viewMode,
+ Date_t deadline) {
// The caller was expecting to conflict with batch application before entering this function.
// i.e. the caller does not currently have a ShouldNotConflict... block in scope.
bool callerWasConflicting = opCtx->lockState()->shouldConflictWithSecondaryBatchApplication();
@@ -241,13 +243,13 @@ AutoGetCollectionForRead::AutoGetCollectionForRead(OperationContext* opCtx,
}
}
-
-AutoGetCollectionForReadCommand::AutoGetCollectionForReadCommand(
- OperationContext* opCtx,
- const NamespaceStringOrUUID& nsOrUUID,
- AutoGetCollectionViewMode viewMode,
- Date_t deadline,
- AutoStatsTracker::LogMode logMode)
+template <typename AutoGetCollectionForReadType>
+AutoGetCollectionForReadCommandBase<AutoGetCollectionForReadType>::
+ AutoGetCollectionForReadCommandBase(OperationContext* opCtx,
+ const NamespaceStringOrUUID& nsOrUUID,
+ AutoGetCollectionViewMode viewMode,
+ Date_t deadline,
+ AutoStatsTracker::LogMode logMode)
: _autoCollForRead(opCtx, nsOrUUID, viewMode, deadline),
_statsTracker(
opCtx,
@@ -338,4 +340,7 @@ BlockSecondaryReadsDuringBatchApplication_DONT_USE::
allowSecondaryReads->swap(_originalSettings);
}
+template class AutoGetCollectionForReadBase<AutoGetCollection>;
+template class AutoGetCollectionForReadCommandBase<AutoGetCollectionForRead>;
+
} // namespace mongo