summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCelina Tala <celinahtala@gmail.com>2022-10-06 14:00:18 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-31 16:07:37 +0000
commit98294fb90ae6b70224d7b96ecb86807fddf9b459 (patch)
treee8719d6e5aade42c1c686ed67e81305b2bbc7870
parent5048c43f1086b3775ee6de724d43a8755ed8a954 (diff)
downloadmongo-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.cpp8
-rw-r--r--src/mongo/transport/transport_layer_asio_test.cpp5
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.