summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2016-11-30 00:14:28 -0500
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2017-02-27 19:28:13 -0500
commit1da3111dc238698e4e70672b7ba260a368121e50 (patch)
tree40907eb4d351ac451b03fe00bdba72ece5fe6f17 /src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
parentd124f6c14f51440fff9734578166a6a49e3b463b (diff)
downloadmongo-1da3111dc238698e4e70672b7ba260a368121e50.tar.gz
SERVER-27120 Increase synchronization between producer/applier threads and stepdown/stepup
SERVER-27913 Make sure the last applied hash is corresponding to the last applied optime in bgsync start()
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_external_state_impl.cpp')
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state_impl.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
index d7f08443d45..f5a96ed3123 100644
--- a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
@@ -808,12 +808,18 @@ void ReplicationCoordinatorExternalStateImpl::signalApplierToChooseNewSyncSource
}
}
-void ReplicationCoordinatorExternalStateImpl::signalApplierToCancelFetcher() {
+void ReplicationCoordinatorExternalStateImpl::stopProducer() {
LockGuard lk(_threadMutex);
- if (!_bgSync) {
- return;
+ if (_bgSync) {
+ _bgSync->stop(false);
+ }
+}
+
+void ReplicationCoordinatorExternalStateImpl::startProducerIfStopped() {
+ LockGuard lk(_threadMutex);
+ if (_bgSync) {
+ _bgSync->startProducerIfStopped();
}
- _bgSync->cancelFetcher();
}
void ReplicationCoordinatorExternalStateImpl::_dropAllTempCollections(OperationContext* txn) {