This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new d5e3ebb [C++] Delay ClientCredentialFlow::initialize to the first
authenticate call (#12372)
d5e3ebb is described below
commit d5e3ebba2baacb9db57ec0b9621fd7672e2be95f
Author: Yunze Xu <[email protected]>
AuthorDate: Fri Oct 15 23:44:39 2021 +0800
[C++] Delay ClientCredentialFlow::initialize to the first authenticate call
(#12372)
* Delay ClientCredentialFlow::initialize to the first time authenticate()
is called
* Make once_flag object a field
---
pulsar-client-cpp/lib/auth/AuthOauth2.cc | 5 ++---
pulsar-client-cpp/lib/auth/AuthOauth2.h | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/pulsar-client-cpp/lib/auth/AuthOauth2.cc
b/pulsar-client-cpp/lib/auth/AuthOauth2.cc
index 87a217e..0fc935a 100644
--- a/pulsar-client-cpp/lib/auth/AuthOauth2.cc
+++ b/pulsar-client-cpp/lib/auth/AuthOauth2.cc
@@ -282,6 +282,7 @@ static std::string buildClientCredentialsBody(CURL* curl,
const ParamMap& params
}
Oauth2TokenResultPtr ClientCredentialFlow::authenticate() {
+ std::call_once(initializeOnce_, &ClientCredentialFlow::initialize, this);
Oauth2TokenResultPtr resultPtr = Oauth2TokenResultPtr(new
Oauth2TokenResult());
if (tokenEndPoint_.empty()) {
return resultPtr;
@@ -374,9 +375,7 @@ Oauth2TokenResultPtr ClientCredentialFlow::authenticate() {
// AuthOauth2
-AuthOauth2::AuthOauth2(ParamMap& params) : flowPtr_(new
ClientCredentialFlow(params)) {
- flowPtr_->initialize();
-}
+AuthOauth2::AuthOauth2(ParamMap& params) : flowPtr_(new
ClientCredentialFlow(params)) {}
AuthOauth2::~AuthOauth2() {}
diff --git a/pulsar-client-cpp/lib/auth/AuthOauth2.h
b/pulsar-client-cpp/lib/auth/AuthOauth2.h
index b1a5ec6..b3cc952 100644
--- a/pulsar-client-cpp/lib/auth/AuthOauth2.h
+++ b/pulsar-client-cpp/lib/auth/AuthOauth2.h
@@ -20,6 +20,7 @@
#pragma once
#include <pulsar/Authentication.h>
+#include <mutex>
#include <string>
namespace pulsar {
@@ -63,6 +64,7 @@ class ClientCredentialFlow : public Oauth2Flow {
const KeyFile keyFile_;
const std::string audience_;
const std::string scope_;
+ std::once_flag initializeOnce_;
};
class Oauth2CachedToken : public CachedToken {