diff options
author | Billy Donahue <billy.donahue@mongodb.com> | 2020-04-26 07:05:39 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-12-08 22:45:08 +0000 |
commit | 7c51aca7fd085ead0ae3e19d967ff1abf111d13a (patch) | |
tree | becfe057d3dbbb88b02ad628fb1a95a30adf686c /src/mongo/util | |
parent | 987484b4aa34deea1db7d70228989b83448a24e8 (diff) | |
download | mongo-7c51aca7fd085ead0ae3e19d967ff1abf111d13a.tar.gz |
SERVER-40811 make initializers throwy
- Consolidate init-related headers (just init.h and initializer.h)
- Factor out a separate DependencyGraph component
- Remove MONGO_DEFAULT_PREREQUISITES, MONGO_NO_PREREQUISITES, MONGO_NO_DEPENDENTS.
- Document the role of the "default" initializer.
Diffstat (limited to 'src/mongo/util')
33 files changed, 62 insertions, 163 deletions
diff --git a/src/mongo/util/cmdline_utils/censor_cmdline.cpp b/src/mongo/util/cmdline_utils/censor_cmdline.cpp index 526414b21e9..fa1d93d7087 100644 --- a/src/mongo/util/cmdline_utils/censor_cmdline.cpp +++ b/src/mongo/util/cmdline_utils/censor_cmdline.cpp @@ -77,10 +77,7 @@ MONGO_INITIALIZER_GENERAL(GatherReadctionOptions, }; std::vector<optionenvironment::OptionDescription> options; - auto status = optionenvironment::startupOptions.getAllOptions(&options); - if (!status.isOK()) { - return status; - } + uassertStatusOK(optionenvironment::startupOptions.getAllOptions(&options)); for (const auto& opt : options) { if (!opt._redact) { @@ -91,21 +88,14 @@ MONGO_INITIALIZER_GENERAL(GatherReadctionOptions, gRedactedDottedNames.insert(opt._deprecatedDottedNames.begin(), opt._deprecatedDottedNames.end()); if (!opt._singleName.empty()) { - auto status = insertSingleName(opt._singleName); - if (!status.isOK()) { - return status; - } + uassertStatusOK(insertSingleName(opt._singleName)); } for (const auto& name : opt._deprecatedSingleNames) { - auto status = insertSingleName(name); - if (!status.isOK()) { - return status; - } + uassertStatusOK(insertSingleName(name)); } } gGatherOptionsDone = true; - return Status::OK(); } bool _isPasswordArgument(const std::string& name) { diff --git a/src/mongo/util/concurrency/thread_pool_test.cpp b/src/mongo/util/concurrency/thread_pool_test.cpp index 0b456c6abc1..c5eb7771eb5 100644 --- a/src/mongo/util/concurrency/thread_pool_test.cpp +++ b/src/mongo/util/concurrency/thread_pool_test.cpp @@ -55,7 +55,6 @@ using namespace fmt::literals; MONGO_INITIALIZER(ThreadPoolCommonTests)(InitializerContext*) { addTestsForThreadPool("ThreadPoolCommon", []() { return std::make_unique<ThreadPool>(ThreadPool::Options()); }); - return Status::OK(); } class ThreadPoolTest : public unittest::Test { diff --git a/src/mongo/util/diagnostic_info.cpp b/src/mongo/util/diagnostic_info.cpp index 49076e76c91..bb65abd4a4a 100644 --- a/src/mongo/util/diagnostic_info.cpp +++ b/src/mongo/util/diagnostic_info.cpp @@ -216,8 +216,6 @@ MONGO_INITIALIZER_GENERAL(DiagnosticInfo, (/* NO PREREQS */), ("FinalizeDiagnost }; latch_detail::installDiagnosticListener<DiagnosticListener>(); - - return Status::OK(); } MONGO_INITIALIZER(InterruptibleWaitListener)(InitializerContext* context) { @@ -258,8 +256,6 @@ MONGO_INITIALIZER(InterruptibleWaitListener)(InitializerContext* context) { }; Interruptible::installWaitListener<WaitListener>(); - - return Status::OK(); } } // namespace diff --git a/src/mongo/util/fail_point.cpp b/src/mongo/util/fail_point.cpp index 34a5cb7454e..745983c107e 100644 --- a/src/mongo/util/fail_point.cpp +++ b/src/mongo/util/fail_point.cpp @@ -58,7 +58,6 @@ MONGO_FAIL_POINT_DEFINE(dummy); // used by tests in jstests/fail_point MONGO_INITIALIZER_GENERAL(AllFailPointsRegistered, (), ()) (InitializerContext* context) { globalFailPointRegistry().freeze(); - return Status::OK(); } /** The per-thread PRNG used by fail-points. */ diff --git a/src/mongo/util/generate_icu_init_cpp.py b/src/mongo/util/generate_icu_init_cpp.py index 2d339660c78..f606a2ee800 100755 --- a/src/mongo/util/generate_icu_init_cpp.py +++ b/src/mongo/util/generate_icu_init_cpp.py @@ -103,12 +103,11 @@ alignas(16) const uint8_t kRawData[] = {%(decimal_encoded_data)s}; } // namespace -MONGO_INITIALIZER_GENERAL(LoadICUData, MONGO_NO_PREREQUISITES, ("BeginStartupOptionHandling"))( +MONGO_INITIALIZER_GENERAL(LoadICUData, (), ("BeginStartupOptionHandling"))( InitializerContext* context) { UErrorCode status = U_ZERO_ERROR; udata_setCommonData(kRawData, &status); fassert(40088, U_SUCCESS(status)); - return Status::OK(); } } // namespace mongo diff --git a/src/mongo/util/heap_profiler.cpp b/src/mongo/util/heap_profiler.cpp index 9d0e91ae536..7c39be5e84d 100644 --- a/src/mongo/util/heap_profiler.cpp +++ b/src/mongo/util/heap_profiler.cpp @@ -713,7 +713,6 @@ MONGO_INITIALIZER_GENERAL(StartHeapProfiling, ("EndStartupOptionHandling"), ("de (InitializerContext* context) { if (HeapProfilingEnabled) HeapProfiler::heapProfiler = new HeapProfiler(); - return Status::OK(); } } // namespace diff --git a/src/mongo/util/icu_init_stub.cpp b/src/mongo/util/icu_init_stub.cpp index 29838c88b63..70c641fdcc3 100644 --- a/src/mongo/util/icu_init_stub.cpp +++ b/src/mongo/util/icu_init_stub.cpp @@ -36,9 +36,7 @@ namespace { // This initializer provides a no-op definition of the LoadICUData MONGO_INITIALIZER, for use when // the system version of ICU is used instead of the vendored version. -MONGO_INITIALIZER(LoadICUData)(InitializerContext* context) { - return Status::OK(); -} +MONGO_INITIALIZER(LoadICUData)(InitializerContext* context) {} } // namespace } // namespace mongo diff --git a/src/mongo/util/latch_analyzer.cpp b/src/mongo/util/latch_analyzer.cpp index 266f610d83d..a77c21d847e 100644 --- a/src/mongo/util/latch_analyzer.cpp +++ b/src/mongo/util/latch_analyzer.cpp @@ -95,8 +95,6 @@ public: MONGO_INITIALIZER_GENERAL(LatchAnalysis, (/* NO PREREQS */), ("FinalizeDiagnosticListeners")) (InitializerContext* context) { latch_detail::installDiagnosticListener<DiagnosticListener>(); - - return Status::OK(); } // Create a FailPoint to analyze latches more seriously for diagnostic purposes. This can be used diff --git a/src/mongo/util/net/openssl_init.cpp b/src/mongo/util/net/openssl_init.cpp index c4980bb0042..0f2c439e5f9 100644 --- a/src/mongo/util/net/openssl_init.cpp +++ b/src/mongo/util/net/openssl_init.cpp @@ -177,8 +177,6 @@ MONGO_INITIALIZER(SetupOpenSSL)(InitializerContext*) { // Setup OpenSSL multithreading callbacks and mutexes SSLThreadInfo::init(); - - return Status::OK(); } } // namespace diff --git a/src/mongo/util/net/ssl/detail/impl/schannel.ipp b/src/mongo/util/net/ssl/detail/impl/schannel.ipp index 99ccf211c2f..b46cffd0cd7 100644 --- a/src/mongo/util/net/ssl/detail/impl/schannel.ipp +++ b/src/mongo/util/net/ssl/detail/impl/schannel.ipp @@ -817,8 +817,6 @@ MONGO_INITIALIZER(InitializeSchannelGetServerIdentityFn)(mongo::InitializerConte SSLHandshakeManager::setSslGetServerIdentityFn( sc->getFunctionAs<SslGetServerIdentityFn>("SslGetServerIdentity").getValue()); - - return mongo::Status::OK(); } } // namespace detail diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp index 87772d303c8..39228cdfb8c 100644 --- a/src/mongo/util/net/ssl_manager.cpp +++ b/src/mongo/util/net/ssl_manager.cpp @@ -633,8 +633,6 @@ MONGO_INITIALIZER_WITH_PREREQUISITES(SSLManagerLogger, ("SSLManager")) "expiration"_attr = config.serverCertificateExpirationDate); } } - - return Status::OK(); } Status SSLX509Name::normalizeStrings() { diff --git a/src/mongo/util/net/ssl_manager_apple.cpp b/src/mongo/util/net/ssl_manager_apple.cpp index 6a20c9bbeda..c4547bf28d5 100644 --- a/src/mongo/util/net/ssl_manager_apple.cpp +++ b/src/mongo/util/net/ssl_manager_apple.cpp @@ -38,7 +38,6 @@ #include "mongo/base/checked_cast.h" #include "mongo/base/init.h" -#include "mongo/base/initializer_context.h" #include "mongo/base/status.h" #include "mongo/base/status_with.h" #include "mongo/crypto/sha1_block.h" @@ -1836,7 +1835,6 @@ MONGO_INITIALIZER_WITH_PREREQUISITES(SSLManager, ("EndStartupOptionHandling")) if (!isSSLServer || (sslGlobalParams.sslMode.load() != SSLParams::SSLMode_disabled)) { theSSLManagerCoordinator = new SSLManagerCoordinator(); } - return Status::OK(); } } // namespace mongo diff --git a/src/mongo/util/net/ssl_manager_none.cpp b/src/mongo/util/net/ssl_manager_none.cpp index 696ff2f95a5..178975b2654 100644 --- a/src/mongo/util/net/ssl_manager_none.cpp +++ b/src/mongo/util/net/ssl_manager_none.cpp @@ -33,10 +33,8 @@ namespace mongo { namespace { -MONGO_INITIALIZER(SSLManager)(InitializerContext*) { - // we need a no-op initializer so that we can depend on SSLManager as a prerequisite in - // non-SSL builds. - return Status::OK(); -} +// we need a no-op initializer so that we can depend on SSLManager as a prerequisite in +// non-SSL builds. +MONGO_INITIALIZER(SSLManager)(InitializerContext*) {} } // namespace } // namespace mongo diff --git a/src/mongo/util/net/ssl_manager_openssl.cpp b/src/mongo/util/net/ssl_manager_openssl.cpp index cbd75b964f2..1cba80be3a4 100644 --- a/src/mongo/util/net/ssl_manager_openssl.cpp +++ b/src/mongo/util/net/ssl_manager_openssl.cpp @@ -1430,7 +1430,6 @@ MONGO_INITIALIZER_WITH_PREREQUISITES(SSLManager, ("SetupOpenSSL", "EndStartupOpt if (!isSSLServer || (sslGlobalParams.sslMode.load() != SSLParams::SSLMode_disabled)) { theSSLManagerCoordinator = new SSLManagerCoordinator(); } - return Status::OK(); } std::shared_ptr<SSLManagerInterface> SSLManagerInterface::create(const SSLParams& params, diff --git a/src/mongo/util/net/ssl_manager_windows.cpp b/src/mongo/util/net/ssl_manager_windows.cpp index 8d434e52416..c8cf3f1339d 100644 --- a/src/mongo/util/net/ssl_manager_windows.cpp +++ b/src/mongo/util/net/ssl_manager_windows.cpp @@ -43,7 +43,6 @@ #include <winhttp.h> #include "mongo/base/init.h" -#include "mongo/base/initializer_context.h" #include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/util/builder.h" #include "mongo/config.h" diff --git a/src/mongo/util/net/ssl_options_client.cpp b/src/mongo/util/net/ssl_options_client.cpp index fb40ebb2bc7..6422a37d9e3 100644 --- a/src/mongo/util/net/ssl_options_client.cpp +++ b/src/mongo/util/net/ssl_options_client.cpp @@ -51,11 +51,8 @@ MONGO_STARTUP_OPTIONS_STORE(SSLClientOptions)(InitializerContext*) { } if (params.count("tls.disabledProtocols")) { - const auto status = - storeSSLDisabledProtocols(params["tls.disabledProtocols"].as<std::string>()); - if (!status.isOK()) { - return status; - } + uassertStatusOK( + storeSSLDisabledProtocols(params["tls.disabledProtocols"].as<std::string>())); #if ((MONGO_CONFIG_SSL_PROVIDER != MONGO_CONFIG_SSL_PROVIDER_OPENSSL) || \ (OPENSSL_VERSION_NUMBER >= 0x100000cf)) /* 1.0.0l */ } else { @@ -72,17 +69,12 @@ MONGO_STARTUP_OPTIONS_STORE(SSLClientOptions)(InitializerContext*) { #ifdef MONGO_CONFIG_SSL_CERTIFICATE_SELECTORS if (params.count("tls.certificateSelector")) { - const auto status = + uassertStatusOK( parseCertificateSelector(&sslGlobalParams.sslCertificateSelector, "tls.certificateSelector", - params["tls.certificateSelector"].as<std::string>()); - if (!status.isOK()) { - return status; - } + params["tls.certificateSelector"].as<std::string>())); } #endif - - return Status::OK(); } } // namespace diff --git a/src/mongo/util/net/ssl_options_server.cpp b/src/mongo/util/net/ssl_options_server.cpp index 1e21f2d7b22..0b0f0b4e955 100644 --- a/src/mongo/util/net/ssl_options_server.cpp +++ b/src/mongo/util/net/ssl_options_server.cpp @@ -95,7 +95,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { if (swMode.isOK()) { sslGlobalParams.sslMode.store(swMode.getValue()); } else { - return {ErrorCodes::BadValue, "unsupported value for tlsMode " + sslModeParam}; + uasserted(ErrorCodes::BadValue, "unsupported value for tlsMode " + sslModeParam); } } else if (params.count("net.ssl.mode")) { std::string sslModeParam = params["net.ssl.mode"].as<string>(); @@ -103,7 +103,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { if (swMode.isOK()) { sslGlobalParams.sslMode.store(swMode.getValue()); } else { - return {ErrorCodes::BadValue, "unsupported value for sslMode " + sslModeParam}; + uasserted(ErrorCodes::BadValue, "unsupported value for sslMode " + sslModeParam); } } @@ -142,9 +142,9 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { 23286, "net.tls.tlsCipherConfig is deprecated. It will be removed in a future release."); if (sslGlobalParams.sslCipherConfig != kSSLCipherConfigDefault) { - return {ErrorCodes::BadValue, - "net.tls.tlsCipherConfig is incompatible with the openTLSCipherConfig " - "setParameter"}; + uasserted(ErrorCodes::BadValue, + "net.tls.tlsCipherConfig is incompatible with the openTLSCipherConfig " + "setParameter"); } sslGlobalParams.sslCipherConfig = params["net.tls.tlsCipherConfig"].as<string>(); } @@ -153,9 +153,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { const auto status = storeSSLDisabledProtocols(params["net.tls.disabledProtocols"].as<string>(), SSLDisabledProtocolsMode::kAcceptNegativePrefix); - if (!status.isOK()) { - return status; - } + uassertStatusOK(status); #if (MONGO_CONFIG_SSL_PROVIDER != MONGO_CONFIG_SSL_PROVIDER_OPENSSL) || \ (OPENSSL_VERSION_NUMBER >= 0x100000cf) /* 1.0.0l */ } else { @@ -170,10 +168,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { } if (params.count("net.tls.logVersions")) { - const auto status = storeTLSLogVersion(params["net.tls.logVersions"].as<string>()); - if (!status.isOK()) { - return status; - } + uassertStatusOK(storeTLSLogVersion(params["net.tls.logVersions"].as<string>())); } #ifdef MONGO_CONFIG_SSL_CERTIFICATE_SELECTORS @@ -182,9 +177,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { parseCertificateSelector(&sslGlobalParams.sslCertificateSelector, "net.tls.certificateSelector", params["net.tls.certificateSelector"].as<std::string>()); - if (!status.isOK()) { - return status; - } + uassertStatusOK(status); } if (params.count("net.tls.clusterCertificateSelector")) { @@ -192,9 +185,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { &sslGlobalParams.sslClusterCertificateSelector, "net.tls.clusterCertificateSelector", params["net.tls.clusterCertificateSelector"].as<std::string>()); - if (!status.isOK()) { - return status; - } + uassertStatusOK(status); } #endif @@ -202,11 +193,11 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { if (sslGlobalParams.sslMode.load() != SSLParams::SSLMode_disabled) { bool usingCertifiateSelectors = params.count("net.tls.certificateSelector"); if (sslGlobalParams.sslPEMKeyFile.size() == 0 && !usingCertifiateSelectors) { - return {ErrorCodes::BadValue, - "need tlsCertificateKeyFile or certificateSelector when TLS is enabled"}; + uasserted(ErrorCodes::BadValue, + "need tlsCertificateKeyFile or certificateSelector when TLS is enabled"); } if (!sslGlobalParams.sslCRLFile.empty() && sslGlobalParams.sslCAFile.empty()) { - return {ErrorCodes::BadValue, "need tlsCAFile with tlsCRLFile"}; + uasserted(ErrorCodes::BadValue, "need tlsCAFile with tlsCRLFile"); } std::string sslCANotFoundError( @@ -218,7 +209,7 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { // X.509 certificates for auth instead of relying on a CA file. if (sslGlobalParams.sslCAFile.empty() && !usingCertifiateSelectors && clusterAuthMode == ServerGlobalParams::ClusterAuthMode_x509) { - return {ErrorCodes::BadValue, sslCANotFoundError}; + uasserted(ErrorCodes::BadValue, sslCANotFoundError); } } else if (sslGlobalParams.sslPEMKeyFile.size() || sslGlobalParams.sslPEMKeyPassword.size() || sslGlobalParams.sslClusterFile.size() || sslGlobalParams.sslClusterPassword.size() || @@ -230,16 +221,16 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { params.count("net.tls.clusterCertificateSelector") || #endif sslGlobalParams.sslWeakCertificateValidation) { - return {ErrorCodes::BadValue, - "need to enable TLS via the sslMode/tlsMode flag when " - "using TLS configuration parameters"}; + uasserted(ErrorCodes::BadValue, + "need to enable TLS via the sslMode/tlsMode flag when " + "using TLS configuration parameters"); } if (clusterAuthMode == ServerGlobalParams::ClusterAuthMode_sendKeyFile || clusterAuthMode == ServerGlobalParams::ClusterAuthMode_sendX509 || clusterAuthMode == ServerGlobalParams::ClusterAuthMode_x509) { if (sslGlobalParams.sslMode.load() == SSLParams::SSLMode_disabled) { - return {ErrorCodes::BadValue, "need to enable TLS via the tlsMode flag"}; + uasserted(ErrorCodes::BadValue, "need to enable TLS via the tlsMode flag"); } } @@ -248,12 +239,10 @@ MONGO_STARTUP_OPTIONS_POST(SSLServerOptions)(InitializerContext*) { if (clusterAuthMode == ServerGlobalParams::ClusterAuthMode_sendX509 || (clusterAuthMode == ServerGlobalParams::ClusterAuthMode_x509 && !serverGlobalParams.transitionToAuth)) { - return {ErrorCodes::BadValue, - "cannot have x.509 cluster authentication in allowTLS mode"}; + uasserted(ErrorCodes::BadValue, + "cannot have x.509 cluster authentication in allowTLS mode"); } } - - return Status::OK(); } // Alias --tlsOnNormalPorts as --tlsMode=requireTLS @@ -295,9 +284,7 @@ Status canonicalizeSSLServerOptions(moe::Environment* params) { MONGO_STARTUP_OPTIONS_VALIDATE(SSLServerOptions)(InitializerContext*) { auto status = canonicalizeSSLServerOptions(&moe::startupOptionsParsed); - if (!status.isOK()) { - return status; - } + uassertStatusOK(status); #ifdef _WIN32 const auto& params = moe::startupOptionsParsed; @@ -306,31 +293,29 @@ MONGO_STARTUP_OPTIONS_VALIDATE(SSLServerOptions)(InitializerContext*) { if (params.count("net.tls.certificateKeyFile") && !boost::filesystem::path(params["net.tls.certificateKeyFile"].as<string>()) .is_absolute()) { - return {ErrorCodes::BadValue, - "PEMKeyFile requires an absolute file path with Windows services"}; + uasserted(ErrorCodes::BadValue, + "PEMKeyFile requires an absolute file path with Windows services"); } if (params.count("net.tls.clusterFile") && !boost::filesystem::path(params["net.tls.clusterFile"].as<string>()).is_absolute()) { - return {ErrorCodes::BadValue, - "clusterFile requires an absolute file path with Windows services"}; + uasserted(ErrorCodes::BadValue, + "clusterFile requires an absolute file path with Windows services"); } if (params.count("net.tls.CAFile") && !boost::filesystem::path(params["net.tls.CAFile"].as<string>()).is_absolute()) { - return {ErrorCodes::BadValue, - "CAFile requires an absolute file path with Windows services"}; + uasserted(ErrorCodes::BadValue, + "CAFile requires an absolute file path with Windows services"); } if (params.count("net.tls.CRLFile") && !boost::filesystem::path(params["net.tls.CRLFile"].as<string>()).is_absolute()) { - return {ErrorCodes::BadValue, - "CRLFile requires an absolute file path with Windows services"}; + uasserted(ErrorCodes::BadValue, + "CRLFile requires an absolute file path with Windows services"); } } #endif - - return Status::OK(); } // This warning must be deferred until after @@ -343,7 +328,6 @@ MONGO_INITIALIZER_WITH_PREREQUISITES(ImplicitDisableTLS10Warning, ("ServerLogRed "Automatically disabling TLS 1.0, to force-enable TLS 1.0 " "specify --sslDisabledProtocols 'none'"); } - return Status::OK(); } } // namespace diff --git a/src/mongo/util/net/ssl_options_test.cpp b/src/mongo/util/net/ssl_options_test.cpp index 76ad7f48d0b..c666d9636c2 100644 --- a/src/mongo/util/net/ssl_options_test.cpp +++ b/src/mongo/util/net/ssl_options_test.cpp @@ -36,7 +36,6 @@ #include <boost/range/size.hpp> #include <ostream> -#include "mongo/base/global_initializer.h" #include "mongo/base/init.h" #include "mongo/base/initializer.h" #include "mongo/db/server_options_base.h" @@ -54,27 +53,18 @@ namespace moe = mongo::optionenvironment; namespace mongo { namespace { -MONGO_INITIALIZER(ServerLogRedirection)(InitializerContext*) { - // ssl_options_server.cpp has an initializer which depends on logging. - // We can stub that dependency out for unit testing purposes. - return Status::OK(); -} +// ssl_options_server.cpp has an initializer which depends on logging. +// We can stub that dependency out for unit testing purposes. +MONGO_INITIALIZER(ServerLogRedirection)(InitializerContext*) {} Status executeInitializer(const std::string& name) try { - const auto* node = - getGlobalInitializer().getInitializerDependencyGraph().getInitializerNode(name); - if (!node) { - return {ErrorCodes::BadValue, str::stream() << "Unknown initializer: '" << name << "'"}; - } - - const auto& fn = node->getInitializerFunction(); - if (!fn) { - return {ErrorCodes::InternalError, - str::stream() << "Initializer node '" << name << "' has no associated function."}; - } - - // The initializers we call don't actually need a context currently. - return fn(nullptr); + InitializerFunction fn = getGlobalInitializer().getInitializerFunctionForTesting(name); + uassert(ErrorCodes::InternalError, + str::stream() << "Initializer node '" << name << "' has no associated function.", + fn); + InitializerContext initContext({}); + fn(&initContext); + return Status::OK(); } catch (const DBException& ex) { return ex.toStatus(); } diff --git a/src/mongo/util/options_parser/options_parser.cpp b/src/mongo/util/options_parser/options_parser.cpp index 5a0e5ab8fdb..a01d229514c 100644 --- a/src/mongo/util/options_parser/options_parser.cpp +++ b/src/mongo/util/options_parser/options_parser.cpp @@ -85,12 +85,9 @@ bool shouldUseStrict() { return true; } -MONGO_INITIALIZER_GENERAL(OptionsParseUseStrict, - MONGO_NO_PREREQUISITES, - ("BeginStartupOptionParsing")) +MONGO_INITIALIZER_GENERAL(OptionsParseUseStrict, (), ("BeginStartupOptionParsing")) (InitializerContext* context) { OptionsParser::useStrict = shouldUseStrict; - return Status::OK(); } // The following section contains utility functions that convert between the various objects diff --git a/src/mongo/util/options_parser/options_parser_init.cpp b/src/mongo/util/options_parser/options_parser_init.cpp index 304a6d1d152..73272cb8ab5 100644 --- a/src/mongo/util/options_parser/options_parser_init.cpp +++ b/src/mongo/util/options_parser/options_parser_init.cpp @@ -51,8 +51,6 @@ MONGO_STARTUP_OPTIONS_PARSE(StartupOptions)(InitializerContext* context) { std::cerr << "try '" << context->args()[0] << " --help' for more information" << std::endl; quickExit(EXIT_BADOPTIONS); } - - return Status::OK(); } MONGO_INITIALIZER_GENERAL(OutputConfig, @@ -61,16 +59,12 @@ MONGO_INITIALIZER_GENERAL(OutputConfig, (InitializerContext*) { if (startupOptionsParsed.count("outputConfig")) { bool output = false; - auto status = startupOptionsParsed.get(Key("outputConfig"), &output); - if (!status.isOK()) { - return status; - } + uassertStatusOK(startupOptionsParsed.get(Key("outputConfig"), &output)); if (output) { std::cout << startupOptionsParsed.toYAML() << std::endl; quickExit(EXIT_CLEAN); } } - return Status::OK(); } } // namespace diff --git a/src/mongo/util/options_parser/startup_option_init.cpp b/src/mongo/util/options_parser/startup_option_init.cpp index efc1ed82567..6ac10f6098c 100644 --- a/src/mongo/util/options_parser/startup_option_init.cpp +++ b/src/mongo/util/options_parser/startup_option_init.cpp @@ -44,12 +44,8 @@ namespace { std::string makeInitializer(const std::string& name, const std::vector<std::string>& after, const std::vector<std::string>& before) { - uassertStatusOK(getGlobalInitializer().getInitializerDependencyGraph().addInitializer( - name, - [](InitializerContext*) { return Status::OK(); }, - [](DeinitializerContext*) { return Status::OK(); }, - after, - before)); + getGlobalInitializer().addInitializer( + name, [](InitializerContext*) {}, [](DeinitializerContext*) {}, after, before); return name; } diff --git a/src/mongo/util/perfctr_collect.cpp b/src/mongo/util/perfctr_collect.cpp index 8ee4067b146..6e9ae1dc0f2 100644 --- a/src/mongo/util/perfctr_collect.cpp +++ b/src/mongo/util/perfctr_collect.cpp @@ -55,12 +55,10 @@ MONGO_INITIALIZER(PdhInit)(InitializerContext* context) { hPdhLibrary = LoadLibraryW(L"pdh.dll"); if (nullptr == hPdhLibrary) { DWORD gle = GetLastError(); - return {ErrorCodes::WindowsPdhError, - str::stream() << "LoadLibrary of pdh.dll failed with " - << errnoWithDescription(gle)}; + uasserted(ErrorCodes::WindowsPdhError, + str::stream() << "LoadLibrary of pdh.dll failed with " + << errnoWithDescription(gle)); } - - return Status::OK(); } /** diff --git a/src/mongo/util/platform_init.cpp b/src/mongo/util/platform_init.cpp index ac75975440f..28cfd6cb9f9 100644 --- a/src/mongo/util/platform_init.cpp +++ b/src/mongo/util/platform_init.cpp @@ -113,8 +113,6 @@ MONGO_INITIALIZER(Behaviors_Win32)(InitializerContext*) { std::min(std::max(int(tc.wPeriodMin), targetResolution), int(tc.wPeriodMax)); invariant(timeBeginPeriod(timerResolution) == TIMERR_NOERROR); } - - return Status::OK(); } } // namespace mongo diff --git a/src/mongo/util/processinfo.cpp b/src/mongo/util/processinfo.cpp index 558415a1705..197ebe00848 100644 --- a/src/mongo/util/processinfo.cpp +++ b/src/mongo/util/processinfo.cpp @@ -46,7 +46,6 @@ namespace mongo { namespace { MONGO_INITIALIZER(initApplicationInfo)(InitializerContext* context) { ProcessInfo().appInfo().init(context->args()); - return Status::OK(); } } // namespace diff --git a/src/mongo/util/stacktrace_somap.cpp b/src/mongo/util/stacktrace_somap.cpp index 767bd42a521..947114affae 100644 --- a/src/mongo/util/stacktrace_somap.cpp +++ b/src/mongo/util/stacktrace_somap.cpp @@ -349,7 +349,6 @@ SharedObjectMapInfo& mutableGlobalSharedObjectMapInfo() { MONGO_INITIALIZER(ExtractSOMap)(InitializerContext*) { // Call buildObj() again now that there is better VersionInfo. mutableGlobalSharedObjectMapInfo().setObj(buildObj()); - return Status::OK(); } const bool dummyToForceEarlyInitializationOfSharedObjectMapInfo = [] { diff --git a/src/mongo/util/stacktrace_windows.cpp b/src/mongo/util/stacktrace_windows.cpp index c95911d112c..99ceea9e937 100644 --- a/src/mongo/util/stacktrace_windows.cpp +++ b/src/mongo/util/stacktrace_windows.cpp @@ -142,9 +142,6 @@ MONGO_INITIALIZER(IntializeSymbolHandler)(::mongo::InitializerContext* ctx) { // context. The constructor of SymbolHandler does all the error handling, so we don't need to // do anything with the return value. Just make sure it gets called. SymbolHandler::instance(); - - // Initializing the symbol handler is not a fatal error, so we always return Status::OK() here. - return Status::OK(); } /** diff --git a/src/mongo/util/system_tick_source.cpp b/src/mongo/util/system_tick_source.cpp index 12defed767c..a11de88fd16 100644 --- a/src/mongo/util/system_tick_source.cpp +++ b/src/mongo/util/system_tick_source.cpp @@ -142,7 +142,6 @@ void initTickSource() {} MONGO_INITIALIZER(SystemTickSourceInit)(InitializerContext* context) { initTickSource(); SystemTickSource::get(); - return Status::OK(); } TickSource::Tick SystemTickSource::getTicks() { diff --git a/src/mongo/util/tcmalloc_set_parameter.cpp b/src/mongo/util/tcmalloc_set_parameter.cpp index 898d9af9abd..d8ab1f3939f 100644 --- a/src/mongo/util/tcmalloc_set_parameter.cpp +++ b/src/mongo/util/tcmalloc_set_parameter.cpp @@ -123,14 +123,12 @@ TCMALLOC_SP_METHODS(AggressiveMemoryDecommit) namespace { -MONGO_INITIALIZER_GENERAL(TcmallocConfigurationDefaults, - MONGO_NO_PREREQUISITES, - ("BeginStartupOptionHandling")) +MONGO_INITIALIZER_GENERAL(TcmallocConfigurationDefaults, (), ("BeginStartupOptionHandling")) (InitializerContext*) { // Before processing the command line options, if the user has not specified a value in via // the environment, set tcmalloc.max_total_thread_cache_bytes to its default value. if (getenv("TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES")) { - return Status::OK(); + return; } ProcessInfo pi; @@ -140,7 +138,7 @@ MONGO_INITIALIZER_GENERAL(TcmallocConfigurationDefaults, (systemMemorySizeMB / 8) * 1024 * 1024; // 1/8 of system memory in bytes size_t cacheSize = std::min(defaultTcMallocCacheSize, derivedTcMallocCacheSize); - return setProperty(kMaxTotalThreadCacheBytesPropertyName, cacheSize); + uassertStatusOK(setProperty(kMaxTotalThreadCacheBytesPropertyName, cacheSize)); } } // namespace diff --git a/src/mongo/util/testing_options.cpp b/src/mongo/util/testing_options.cpp index dcf98b10a11..32ca0896ef7 100644 --- a/src/mongo/util/testing_options.cpp +++ b/src/mongo/util/testing_options.cpp @@ -58,8 +58,6 @@ MONGO_INITIALIZER_GENERAL(TestingDiagnostics, "Testing behaviors are enabled. This has serious implications for both " "performance and security."); } - - return Status::OK(); } } // namespace diff --git a/src/mongo/util/testing_proctor.cpp b/src/mongo/util/testing_proctor.cpp index f9f378fb687..416d482ab62 100644 --- a/src/mongo/util/testing_proctor.cpp +++ b/src/mongo/util/testing_proctor.cpp @@ -73,7 +73,6 @@ MONGO_INITIALIZER(DisableTestingDiagnosticsByDefault)(InitializerContext*) { if (!TestingProctor::instance().isInitialized()) { TestingProctor::instance().setEnabled(false); } - return Status::OK(); } } // namespace diff --git a/src/mongo/util/thread_context.cpp b/src/mongo/util/thread_context.cpp index 3bcde4a9fdf..e08122a4405 100644 --- a/src/mongo/util/thread_context.cpp +++ b/src/mongo/util/thread_context.cpp @@ -43,7 +43,6 @@ thread_local ThreadContext::Handle ThreadContext::_handle; MONGO_INITIALIZER(ThreadContextsInitialized)(InitializerContext*) { ThreadContext::initializeMain(); - return Status::OK(); } void ThreadContext::initializeMain() { diff --git a/src/mongo/util/time_support_test.cpp b/src/mongo/util/time_support_test.cpp index 635e468692c..17dc35f58f3 100644 --- a/src/mongo/util/time_support_test.cpp +++ b/src/mongo/util/time_support_test.cpp @@ -59,10 +59,9 @@ char tzEnvString[] = "TZ=America/New_York"; #pragma warning(disable : 4996) MONGO_INITIALIZER(SetTimeZoneToEasternForTest)(InitializerContext*) { if (-1 == putenv(tzEnvString)) { - return Status(ErrorCodes::BadValue, errnoWithDescription()); + uasserted(ErrorCodes::BadValue, errnoWithDescription()); } tzset(); - return Status::OK(); } #pragma warning(pop) diff --git a/src/mongo/util/version_impl.cpp b/src/mongo/util/version_impl.cpp index c729751f0b9..d28459aae90 100644 --- a/src/mongo/util/version_impl.cpp +++ b/src/mongo/util/version_impl.cpp @@ -99,12 +99,9 @@ public: const InterpolatedVersionInfo interpolatedVersionInfo; -MONGO_INITIALIZER_GENERAL(EnableVersionInfo, - MONGO_NO_PREREQUISITES, - ("BeginStartupOptionRegistration")) +MONGO_INITIALIZER_GENERAL(EnableVersionInfo, (), ("BeginStartupOptionRegistration")) (InitializerContext*) { VersionInfoInterface::enable(&interpolatedVersionInfo); - return Status::OK(); } } // namespace |