func()

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
}