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-20 17:14:24 +0000
commit9853be92a5f34ba722145a185c29542a02563f7b (patch)
treeef9456c44f4440fcd9fd50a4b1fa2732caa9e5c3
parenta04d70ba7367b7d78378dcc4ec4ca3845d137b7f (diff)
downloadmongo-9853be92a5f34ba722145a185c29542a02563f7b.tar.gz
SERVER-66087 Move curlLibraryManager.initialize() to global initializer
-rw-r--r--src/mongo/util/net/http_client_curl.cpp31
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());
}