summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Marks <gabriel.marks@mongodb.com>2022-05-06 19:41:52 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-05-18 20:28:09 +0000
commitc94bb9c1fbc93b250ac3269e2e207d3b2aa2a1b7 (patch)
tree63bf927f347369e423c1825c86586af8a68b6b9d
parentb82d63b3529bab2abb2a4a6e6c688b9f31a105dc (diff)
downloadmongo-c94bb9c1fbc93b250ac3269e2e207d3b2aa2a1b7.tar.gz
SERVER-66087 Move curlLibraryManager.initialize() to global initializer
-rw-r--r--src/mongo/util/net/http_client_curl.cpp29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/mongo/util/net/http_client_curl.cpp b/src/mongo/util/net/http_client_curl.cpp
index 24c8b1946fc..3e6183d2ebf 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;
@@ -712,17 +706,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");
@@ -747,9 +741,10 @@ public:
} // namespace
-// Transitional API used by blockstore to trigger libcurl init
-// until it's been migrated to use the HTTPClient API.
-Status curlLibraryManager_initialize() {
+MONGO_INITIALIZER_GENERAL(CurlLibraryManager,
+ (),
+ ("BeginStartupOptionParsing", "NativeSaslClientContext"))
+(InitializerContext* context) {
return curlLibraryManager.initialize();
}