func newCachedCredentialRetriever()

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
}