From efb3f7689e9f6c54f039dab068c4c279cf87ac99 Mon Sep 17 00:00:00 2001 From: Ben Caimano Date: Mon, 21 Sep 2020 18:59:00 +0000 Subject: SERVER-51080 Fix mongobridge startup ordering --- src/mongo/tools/bridge.cpp | 7 ++++--- src/mongo/transport/transport_layer_asio.cpp | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mongo/tools/bridge.cpp b/src/mongo/tools/bridge.cpp index 1c2f7d46bc9..82489a61492 100644 --- a/src/mongo/tools/bridge.cpp +++ b/src/mongo/tools/bridge.cpp @@ -485,9 +485,6 @@ int bridgeMain(int argc, char** argv) { setGlobalServiceContext(ServiceContext::make()); auto serviceContext = getGlobalServiceContext(); serviceContext->setServiceEntryPoint(std::make_unique(serviceContext)); - if (auto status = serviceContext->getServiceEntryPoint()->start(); !status.isOK()) { - LOGV2(4907203, "Error starting service entry point", "error"_attr = status); - } transport::TransportLayerASIO::Options opts; opts.ipList.emplace_back("0.0.0.0"); @@ -501,6 +498,10 @@ int bridgeMain(int argc, char** argv) { return EXIT_NET_ERROR; } + if (auto status = serviceContext->getServiceEntryPoint()->start(); !status.isOK()) { + LOGV2(4907203, "Error starting service entry point", "error"_attr = status); + } + if (auto status = tl->start(); !status.isOK()) { LOGV2(22923, "Error starting transport layer", "error"_attr = status); return EXIT_NET_ERROR; diff --git a/src/mongo/transport/transport_layer_asio.cpp b/src/mongo/transport/transport_layer_asio.cpp index 3529f7f510a..39fcf1d1479 100644 --- a/src/mongo/transport/transport_layer_asio.cpp +++ b/src/mongo/transport/transport_layer_asio.cpp @@ -265,7 +265,10 @@ TransportLayerASIO::TransportLayerASIO(const TransportLayerASIO::Options& opts, _egressReactor(std::make_shared()), _acceptorReactor(std::make_shared()), _sep(sep), - _listenerOptions(opts) {} + _listenerOptions(opts) { + invariant(!opts.isIngress() || _sep, + "TransportLayers with ingress must have a ServiceEntryPoint."); +} TransportLayerASIO::~TransportLayerASIO() = default; -- cgit v1.2.1