diff options
author | Blake Oler <blake.oler@mongodb.com> | 2023-04-17 18:09:22 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-26 19:36:04 +0000 |
commit | 2eea702bf931258a0191853c41cdafc74d23cc75 (patch) | |
tree | 4b2da2ada4378f6d516212c3d53dc4c0568314e9 | |
parent | 8abfaf7992a00006b46f7aa3707a7ef946aa686d (diff) | |
download | mongo-2eea702bf931258a0191853c41cdafc74d23cc75.tar.gz |
SERVER-75987 Synchronize the connection and server threads in `transport_layer_test`
(cherry picked from commit a78040a9e614a92220c31ec12360d6d47b8a8fbd)
-rw-r--r-- | src/mongo/transport/transport_layer_asio_test.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mongo/transport/transport_layer_asio_test.cpp b/src/mongo/transport/transport_layer_asio_test.cpp index 613628647ba..b3f63792a26 100644 --- a/src/mongo/transport/transport_layer_asio_test.cpp +++ b/src/mongo/transport/transport_layer_asio_test.cpp @@ -527,20 +527,21 @@ TEST(TransportLayerASIO, EgressConnectionResetByPeerDuringSessionCtor) { // `fp` pauses the `ASIOSession` constructor immediately prior to its // `setsockopt` sequence, to allow time for the peer reset to propagate. - FailPoint& fp = transport::transportLayerASIOSessionPauseBeforeSetSocketOption; + auto fp = std::make_unique<FailPointEnableBlock>( + "transportLayerASIOSessionPauseBeforeSetSocketOption"); Acceptor server(ioContext); server.setOnAccept([&](std::shared_ptr<Acceptor::Connection> conn) { + LOGV2(7598701, "waiting for the client to reach the fail-point"); + (*fp)->waitForTimesEntered(fp->initialTimesEntered() + 1); LOGV2(6101604, "handling a connection by resetting it"); conn->socket.set_option(asio::socket_base::linger(true, 0)); conn->socket.close(); - sleepFor(Seconds{1}); - fp.setMode(FailPoint::off); + fp.reset(); }); JoinThread ioThread{[&] { ioContext.run(); }}; ScopeGuard ioContextStop = [&] { ioContext.stop(); }; - fp.setMode(FailPoint::alwaysOn); LOGV2(6101602, "Connecting", "port"_attr = server.port()); using namespace unittest::match; // On MacOS, calling `setsockopt` on a peer-reset connection yields an |