in internal/credsretriever/refreshing_cache.go [119:136]
func newCachedCredentialRetriever(opts CachedCredentialRetrieverOpts) *cachedCredentialRetriever {
internalCache := expiring.NewLru[string, cacheEntry](opts.MaxCacheSize, opts.CredentialsRenewalTtl, opts.CleanupInterval)
internalActiveRequestCache := expiring.NewLru[string, error](opts.MaxCacheSize, 0, 0)
retriever := &cachedCredentialRetriever{
delegate: opts.Delegate,
internalCache: internalCache,
internalActiveRequestCache: internalActiveRequestCache,
credentialsRenewalTtl: opts.CredentialsRenewalTtl,
minCredentialTtl: defaultMinCredentialTtl,
retryInterval: defaultRetryInterval,
maxRetryJitter: defaultMaxRetryJitter,
now: time.Now,
refreshRateLimiter: rate.NewLimiter(rate.Limit(opts.RefreshQPS), opts.RefreshQPS),
}
internalCache.OnRefresh(retriever.onCredentialRenewal)
internalCache.OnEvicted(retriever.onCredentialEviction)
return retriever
}