summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/data_replicator_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/data_replicator_test.cpp')
-rw-r--r--src/mongo/db/repl/data_replicator_test.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/db/repl/data_replicator_test.cpp b/src/mongo/db/repl/data_replicator_test.cpp
index 5e5388be760..4f841f2f2b7 100644
--- a/src/mongo/db/repl/data_replicator_test.cpp
+++ b/src/mongo/db/repl/data_replicator_test.cpp
@@ -590,6 +590,8 @@ TEST_F(DataReplicatorTest, StartupReturnsShutdownInProgressIfDataReplicatorIsShu
ASSERT_FALSE(dr->isActive());
ASSERT_OK(dr->startup(txn.get(), maxAttempts));
ASSERT_TRUE(dr->isActive());
+ // SyncSourceSelector returns an invalid sync source so DataReplicator is stuck waiting for
+ // another sync source in 'Options::syncSourceRetryWait' ms.
ASSERT_OK(dr->shutdown());
ASSERT_EQUALS(ErrorCodes::ShutdownInProgress, dr->startup(txn.get(), maxAttempts));
}
@@ -638,6 +640,12 @@ TEST_F(DataReplicatorTest, DataReplicatorReturnsCallbackCanceledIfShutdownImmedi
// This will cancel the _startInitialSyncAttemptCallback() task scheduled by startup().
ASSERT_OK(dr->shutdown());
+ // Depending on which DataReplicator stage (_chooseSyncSource or _rollbackCheckerResetCallback)
+ // was interrupted by shutdown(), we may have to request the network interface to deliver
+ // cancellation signals to the DataReplicator callbacks in for DataReplicator to run to
+ // completion.
+ executor::NetworkInterfaceMock::InNetworkGuard(getNet())->runReadyNetworkOperations();
+
dr->join();
ASSERT_EQUALS(ErrorCodes::CallbackCanceled, _lastApplied);