diff options
author | Celina Tala <celinahtala@gmail.com> | 2022-10-06 14:00:18 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-10-31 16:07:37 +0000 |
commit | 98294fb90ae6b70224d7b96ecb86807fddf9b459 (patch) | |
tree | e8719d6e5aade42c1c686ed67e81305b2bbc7870 | |
parent | 5048c43f1086b3775ee6de724d43a8755ed8a954 (diff) | |
download | mongo-98294fb90ae6b70224d7b96ecb86807fddf9b459.tar.gz |
SERVER-69868 Return ShutdownStatus When Starting a Shutdown `TransportLayer`
(cherry picked from commit 29006706c176ca036120d1b2569c0f59dd8f53b6)
-rw-r--r-- | src/mongo/transport/transport_layer_asio.cpp | 8 | ||||
-rw-r--r-- | src/mongo/transport/transport_layer_asio_test.cpp | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/mongo/transport/transport_layer_asio.cpp b/src/mongo/transport/transport_layer_asio.cpp index 8656fcef024..d3f03cbf119 100644 --- a/src/mongo/transport/transport_layer_asio.cpp +++ b/src/mongo/transport/transport_layer_asio.cpp @@ -1300,9 +1300,10 @@ void TransportLayerASIO::_runListener() noexcept { Status TransportLayerASIO::start() { stdx::unique_lock lk(_mutex); - - // Make sure we haven't shutdown already - invariant(!_isShutdown); + if (_isShutdown) { + LOGV2(6986801, "Cannot start an already shutdown TransportLayer"); + return ShutdownStatus; + } if (_listenerOptions.isIngress()) { _listener.thread = stdx::thread([this] { _runListener(); }); @@ -1321,7 +1322,6 @@ void TransportLayerASIO::shutdown() { // We were already stopped return; } - lk.unlock(); _timerService->stop(); lk.lock(); diff --git a/src/mongo/transport/transport_layer_asio_test.cpp b/src/mongo/transport/transport_layer_asio_test.cpp index d9803d00613..9d0b15fb7bd 100644 --- a/src/mongo/transport/transport_layer_asio_test.cpp +++ b/src/mongo/transport/transport_layer_asio_test.cpp @@ -715,6 +715,11 @@ TEST_F(TransportLayerASIOWithServiceContextTest, TimerServiceCanStopMoreThanOnce } } +TEST_F(TransportLayerASIOWithServiceContextTest, TransportStartAfterShutDown) { + tla().shutdown(); + ASSERT_EQ(tla().start(), transport::TransportLayer::ShutdownStatus); +} + #ifdef MONGO_CONFIG_SSL #ifndef _WIN32 // TODO SERVER-62035: enable the following on Windows. |