diff --git a/ydb/public/sdk/cpp/client/iam/common/iam.cpp b/ydb/public/sdk/cpp/client/iam/common/iam.cpp index 58fd5fc33c69..99a7e6df8ffb 100644 --- a/ydb/public/sdk/cpp/client/iam/common/iam.cpp +++ b/ydb/public/sdk/cpp/client/iam/common/iam.cpp @@ -56,9 +56,11 @@ class TIAMCredentialsProvider : public ICredentialsProvider { if (auto it = respMap.find("expires_in"); it == respMap.end()) ythrow yexception() << "Result doesn't contain expires_in"; else { - const TDuration expiresIn = TDuration::Seconds(it->second.GetUInteger()); + const TDuration expiresIn = TDuration::Seconds(it->second.GetUInteger()) / 2; - NextTicketUpdate_ = TInstant::Now() + std::max(expiresIn, RefreshPeriod_); + const auto interval = std::max(std::min(expiresIn, RefreshPeriod_), TDuration::MilliSeconds(100)); + + NextTicketUpdate_ = TInstant::Now() + interval; } } catch (...) { } @@ -83,4 +85,4 @@ TCredentialsProviderFactoryPtr CreateIamCredentialsProviderFactory(const TIamHos return std::make_shared(params); } -} \ No newline at end of file +}