Skip to content

Commit 33633f9

Browse files
sbisciglaws-sdk-cpp-automation
authored andcommitted
track refresh done at class level
1 parent 8772eb8 commit 33633f9

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/aws-cpp-sdk-core/include/aws/core/auth/STSCredentialsProvider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ namespace Aws
5757

5858
// Thread-safe credential fetch coordination
5959
mutable std::atomic<bool> m_refreshInProgress{false};
60+
mutable std::atomic<bool> m_refreshDone{false};
6061
mutable std::shared_ptr<AWSCredentials> m_pendingCredentials;
6162

6263
// Helper methods for credential retrieval

src/aws-cpp-sdk-core/source/auth/STSCredentialsProvider.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,12 @@ AWSCredentials STSAssumeRoleWebIdentityCredentialsProvider::extractCredentialsFr
145145

146146
AWSCredentials STSAssumeRoleWebIdentityCredentialsProvider::fetchCredentialsAsync() {
147147
AWS_LOGSTREAM_DEBUG(STS_LOG_TAG, "Initiating credential fetch from STS/cache");
148+
m_refreshDone.store(false);
148149

149150
AWSCredentials credentials{};
150-
std::atomic<bool> refreshDone{false};
151151

152152
m_credentialsProvider->GetCredentials(
153-
[this, &credentials, &refreshDone](std::shared_ptr<Aws::Crt::Auth::Credentials> crtCredentials, int errorCode) -> void {
153+
[this, &credentials](std::shared_ptr<Aws::Crt::Auth::Credentials> crtCredentials, int errorCode) -> void {
154154
std::unique_lock<std::mutex> lock{m_refreshMutex};
155155
if (errorCode != AWS_ERROR_SUCCESS) {
156156
m_pendingCredentials.reset();
@@ -160,14 +160,14 @@ AWSCredentials STSAssumeRoleWebIdentityCredentialsProvider::fetchCredentialsAsyn
160160
// Store for other waiting threads
161161
m_pendingCredentials = Aws::MakeShared<AWSCredentials>(STS_LOG_TAG, credentials);
162162
}
163-
refreshDone.store(true);
163+
m_refreshDone.store(true);
164164
m_refreshInProgress.store(false);
165165
m_refreshSignal.notify_all();
166166
});
167167

168168
// Wait for completion
169169
std::unique_lock<std::mutex> lock{m_refreshMutex};
170-
auto completed = m_refreshSignal.wait_for(lock, m_providerFuturesTimeoutMs, [&refreshDone]() -> bool { return refreshDone.load(); });
170+
auto completed = m_refreshSignal.wait_for(lock, m_providerFuturesTimeoutMs, [this]() -> bool { return m_refreshDone.load(); });
171171

172172
if (!completed) {
173173
AWS_LOGSTREAM_ERROR(STS_LOG_TAG, "Credential fetch timed out after " << m_providerFuturesTimeoutMs.count() << "ms");

0 commit comments

Comments
 (0)