diff options
author | Lingzhi Deng <lingzhi.deng@mongodb.com> | 2019-05-20 00:49:33 -0400 |
---|---|---|
committer | Lingzhi Deng <lingzhi.deng@mongodb.com> | 2019-05-23 16:46:30 -0400 |
commit | 8a89b076d28a904c200e491698ef1169dd8a7254 (patch) | |
tree | dc32fa3bdc62cdd9f8b9b84777f0df8f03f43cec /src/mongo/db/pipeline/document_source_out.h | |
parent | 47d4eca3fcdfa8eed0f1bef28021c8603452dec3 (diff) | |
download | mongo-8a89b076d28a904c200e491698ef1169dd8a7254.tar.gz |
SERVER-40938: disallow afterClusterTime and ignore prepare conflicts for dbhash and map-reduce
Diffstat (limited to 'src/mongo/db/pipeline/document_source_out.h')
-rw-r--r-- | src/mongo/db/pipeline/document_source_out.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/mongo/db/pipeline/document_source_out.h b/src/mongo/db/pipeline/document_source_out.h index 674aea38657..ce9e4282b14 100644 --- a/src/mongo/db/pipeline/document_source_out.h +++ b/src/mongo/db/pipeline/document_source_out.h @@ -29,6 +29,7 @@ #pragma once +#include "mongo/db/db_raii.h" #include "mongo/db/pipeline/document_source.h" #include "mongo/db/pipeline/document_source_out_gen.h" #include "mongo/db/write_concern_options.h" @@ -46,23 +47,21 @@ class OutStageWriteBlock { OperationContext* _opCtx; repl::ReadConcernArgs _originalArgs; RecoveryUnit::ReadSource _originalSource; - bool _originalIgnorePrepared; + EnforcePrepareConflictsBlock _enforcePrepareConflictsBlock; public: - OutStageWriteBlock(OperationContext* opCtx) : _opCtx(opCtx) { + OutStageWriteBlock(OperationContext* opCtx) + : _opCtx(opCtx), _enforcePrepareConflictsBlock(opCtx) { _originalArgs = repl::ReadConcernArgs::get(_opCtx); _originalSource = _opCtx->recoveryUnit()->getTimestampReadSource(); - _originalIgnorePrepared = _opCtx->recoveryUnit()->getIgnorePrepared(); repl::ReadConcernArgs::get(_opCtx) = repl::ReadConcernArgs(); _opCtx->recoveryUnit()->setTimestampReadSource(RecoveryUnit::kUnset); - _opCtx->recoveryUnit()->setIgnorePrepared(false); } ~OutStageWriteBlock() { repl::ReadConcernArgs::get(_opCtx) = _originalArgs; _opCtx->recoveryUnit()->setTimestampReadSource(_originalSource); - _opCtx->recoveryUnit()->setIgnorePrepared(_originalIgnorePrepared); } }; |