Add constructor overload to STSProfileCredentialsProvider where the client factory returns a shared pointer.#2830
Open
teo-tsirpanis wants to merge 4 commits intoaws:mainfrom
Open
Add constructor overload to STSProfileCredentialsProvider where the client factory returns a shared pointer.#2830teo-tsirpanis wants to merge 4 commits intoaws:mainfrom
STSProfileCredentialsProvider where the client factory returns a shared pointer.#2830teo-tsirpanis wants to merge 4 commits intoaws:mainfrom
Conversation
… client factory returns a shared pointer.
teo-tsirpanis
commented
Jan 26, 2024
| STSProfileCredentialsProvider credsProvider("default", roleSessionDuration, [](const AWSCredentials&) { | ||
| ADD_FAILURE() << "STS Service client should not be used in this scenario."; | ||
| return nullptr; | ||
| return (STSClient*)nullptr; |
Contributor
Author
There was a problem hiding this comment.
The new constructor overload caused return nullptr; to be ambiguous. This is a source-breaking change but I don't think returning nullptr is likely in non-test code.
11 tasks
11 tasks
Member
|
Can you update your PR to remove the .gitignore file change? |
Contributor
Author
|
It was a good change but sure. Done. |
teo-tsirpanis
commented
Oct 10, 2024
| : m_profileName(profileName), | ||
| m_duration(duration), | ||
| m_reloadFrequency(std::chrono::minutes(std::max(int64_t(5), static_cast<int64_t>(duration.count()))) - std::chrono::minutes(5)), | ||
| m_stsClientFactory([=](const auto& credentials) {return std::shared_ptr<Aws::STS::STSClient>(stsClientFactory(credentials), NoOpDeleter<Aws::STS::STSClient>()); }) |
Contributor
Author
There was a problem hiding this comment.
continuing discussion from #2839 (comment)
should use MakeShared for allocator awareness?
@sbera87 because we cannot safely delete an arbitrary pointer we have to create the shared pointer with a special deleter that does nothing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
Description of changes:
The
STSProfileCredentialProviderclass has a constructor overload that accepts anSTSClientfactory function. The problem with this function is that it returns anSTSClient*, making lifetime management tricky in certain cases.This PR introduces an additional overload that accepts an factory that returns a
shared_ptr<STSClient>. This will enable the client to be freed automatically when the credentials provider no longer needs it.The existing constructor overload wraps the
STSClient*into a shared pointer with a deleter that does nothing, maintaining compatibility. I also added an overload to disambiguate between creating a credential provider with anullptrfactory.Check all that applies:
Check which platforms you have built SDK on to verify the correctness of this PR.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.