in proxy/lib/proxy/proxy.go [277:294]
func (s *Service) getAccessTokenForSA(ctx context.Context) (string, error) {
s.gcpAccessTokenFetchLock.Lock()
defer s.gcpAccessTokenFetchLock.Unlock()
now := time.Now()
if now.Before(s.gcpAccessToken.expire) {
// token still valid, check if we need to pre fetch before expired.
s.lockedMaybePrefetchNextToken(ctx, now)
} else {
tok, expire, err := s.fetchAccessTokenForSA(ctx)
if err != nil {
return "", err
}
s.lockedUpdateToken(tok, expire)
}
return s.gcpAccessToken.token, nil
}