diff options
author | Gabriel Marks <gabriel.marks@mongodb.com> | 2022-05-06 19:41:52 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-05-20 17:14:24 +0000 |
commit | 9853be92a5f34ba722145a185c29542a02563f7b (patch) | |
tree | ef9456c44f4440fcd9fd50a4b1fa2732caa9e5c3 | |
parent | a04d70ba7367b7d78378dcc4ec4ca3845d137b7f (diff) | |
download | mongo-9853be92a5f34ba722145a185c29542a02563f7b.tar.gz |
SERVER-66087 Move curlLibraryManager.initialize() to global initializer
-rw-r--r-- | src/mongo/util/net/http_client_curl.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/mongo/util/net/http_client_curl.cpp b/src/mongo/util/net/http_client_curl.cpp index af91c074c1c..6ce87c1a80d 100644 --- a/src/mongo/util/net/http_client_curl.cpp +++ b/src/mongo/util/net/http_client_curl.cpp @@ -108,18 +108,8 @@ public: } Status initialize() { - auto status = _initializeGlobal(); - if (!status.isOK()) { - return status; - } - - return Status::OK(); - } - -private: - Status _initializeGlobal() { if (_initialized) { - return Status::OK(); + return {ErrorCodes::AlreadyInitialized, "CurlLibraryManager already initialized."}; } CURLcode ret = curl_global_init(CURL_GLOBAL_ALL); @@ -137,6 +127,10 @@ private: return Status::OK(); } + bool isInitialized() const { + return _initialized; + } + private: bool _initialized = false; @@ -722,17 +716,17 @@ public: } std::unique_ptr<HttpClient> create() final { - uassertStatusOK(curlLibraryManager.initialize()); + invariant(curlLibraryManager.isInitialized()); return std::make_unique<CurlHttpClient>(HttpConnectionPool::kUse); } std::unique_ptr<HttpClient> createWithoutConnectionPool() final { - uassertStatusOK(curlLibraryManager.initialize()); + invariant(curlLibraryManager.isInitialized()); return std::make_unique<CurlHttpClient>(HttpConnectionPool::kDoNotUse); } BSONObj getServerStatus() final { - + invariant(curlLibraryManager.isInitialized()); BSONObjBuilder info; info.append("type", "curl"); @@ -757,10 +751,11 @@ public: } // namespace -// Transitional API used by blockstore to trigger libcurl init -// until it's been migrated to use the HTTPClient API. -Status curlLibraryManager_initialize() { - return curlLibraryManager.initialize(); +MONGO_INITIALIZER_GENERAL(CurlLibraryManager, + (), + ("BeginStartupOptionParsing", "NativeSaslClientContext")) +(InitializerContext* context) { + uassertStatusOK(curlLibraryManager.initialize()); } |