summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Caimano <ben.caimano@10gen.com>2020-09-21 18:59:00 +0000
committerBen Caimano <ben.caimano@10gen.com>2020-09-22 16:02:52 +0000
commitefb3f7689e9f6c54f039dab068c4c279cf87ac99 (patch)
tree45f737b73f841eb4dd2c251765d05b891e1f67c9
parent66b412e1658a3db4935385147b0048a37b39193e (diff)
downloadmongo-efb3f7689e9f6c54f039dab068c4c279cf87ac99.tar.gz
SERVER-51080 Fix mongobridge startup ordering
-rw-r--r--src/mongo/tools/bridge.cpp7
-rw-r--r--src/mongo/transport/transport_layer_asio.cpp5
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<ServiceEntryPointBridge>(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<ASIOReactor>()),
_acceptorReactor(std::make_shared<ASIOReactor>()),
_sep(sep),
- _listenerOptions(opts) {}
+ _listenerOptions(opts) {
+ invariant(!opts.isIngress() || _sep,
+ "TransportLayers with ingress must have a ServiceEntryPoint.");
+}
TransportLayerASIO::~TransportLayerASIO() = default;