summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2017-01-18 15:47:02 -0500
committerBenety Goh <benety@mongodb.com>2017-01-21 17:03:13 -0500
commit44743ea0c00dd3df1d297a08c7b69402d1a35f70 (patch)
treebb8eddf1b7a8c70a2797c7e8962f1271e054d70d
parentbdece8fbb3e8e39e406b461ccb4933e127b4a13a (diff)
downloadmongo-44743ea0c00dd3df1d297a08c7b69402d1a35f70.tar.gz
SERVER-27741 fixed race in DataReplicatorTest::DataReplicatorResetsOnCompletionCallbackFunctionPointerUponCompletion
(cherry picked from commit 6a2af712f71774dae250c4cbe5f8ac695cfec3ea)
-rw-r--r--src/mongo/db/repl/data_replicator_test.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mongo/db/repl/data_replicator_test.cpp b/src/mongo/db/repl/data_replicator_test.cpp
index 524c95125b7..7fec2ca9862 100644
--- a/src/mongo/db/repl/data_replicator_test.cpp
+++ b/src/mongo/db/repl/data_replicator_test.cpp
@@ -833,6 +833,13 @@ TEST_F(DataReplicatorTest, DataReplicatorResetsOnCompletionCallbackFunctionPoint
ASSERT_FALSE(sharedCallbackStateDestroyed);
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);