summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/data_replicator.cpp
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2016-08-15 12:09:19 -0400
committerBenety Goh <benety@mongodb.com>2016-08-15 15:15:35 -0400
commit9ce3e307d4d7bec5796b75515428d507037998f4 (patch)
tree311d19d3fc1ce9f719fc2d29cac81c6a5d7afe1a /src/mongo/db/repl/data_replicator.cpp
parent8fe1f780342d51cbb8e89546b28682cc0fad4e3f (diff)
downloadmongo-9ce3e307d4d7bec5796b75515428d507037998f4.tar.gz
SERVER-25609 DataReplicator::_onDataCloneFinish should not set InitialSyncState status on cancellation
Diffstat (limited to 'src/mongo/db/repl/data_replicator.cpp')
-rw-r--r--src/mongo/db/repl/data_replicator.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/db/repl/data_replicator.cpp b/src/mongo/db/repl/data_replicator.cpp
index 75ebf8c72e9..d90e947cd59 100644
--- a/src/mongo/db/repl/data_replicator.cpp
+++ b/src/mongo/db/repl/data_replicator.cpp
@@ -575,6 +575,11 @@ Status DataReplicator::_runInitialSyncAttempt_inlock(OperationContext* txn,
_exec->waitForEvent(initialSyncFinishEvent);
log() << "Initial sync finished applying oplog entries.";
+ lk.lock();
+ if (!_initialSyncState->status.isOK()) {
+ return _initialSyncState->status;
+ }
+ lk.unlock();
// Check for roll back, and fail if so.
auto hasHadRollbackResponse = rollbackChecker.hasHadRollback();
@@ -743,6 +748,9 @@ StatusWith<OpTimeWithHash> DataReplicator::doInitialSync(OperationContext* txn,
void DataReplicator::_onDataClonerFinish(const Status& status, HostAndPort syncSource) {
log() << "data clone finished, status: " << status.toString();
+ if (status.code() == ErrorCodes::CallbackCanceled) {
+ return;
+ }
if (!status.isOK()) {
// Initial sync failed during cloning of databases
error() << "Failed to clone data due to '" << status << "'";