fix(gitops): update the git ref cache key from url to url and pat (#7841)

pull/7848/head
Oscar Zhou 2 years ago committed by GitHub
parent 724f1f63b7
commit c23b8b2816
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -297,9 +297,9 @@ func TestService_HardRefresh_ListRefs_GitHub(t *testing.T) {
assert.GreaterOrEqual(t, len(refs), 1) assert.GreaterOrEqual(t, len(refs), 1)
assert.Equal(t, 1, service.repoRefCache.Len()) assert.Equal(t, 1, service.repoRefCache.Len())
refs, err = service.ListRefs(repositoryUrl, username, "fake-token", true) refs, err = service.ListRefs(repositoryUrl, username, "fake-token", false)
assert.Error(t, err) assert.Error(t, err)
assert.Equal(t, 0, service.repoRefCache.Len()) assert.Equal(t, 1, service.repoRefCache.Len())
} }
func TestService_HardRefresh_ListRefs_And_RemoveAllCaches_GitHub(t *testing.T) { func TestService_HardRefresh_ListRefs_And_RemoveAllCaches_GitHub(t *testing.T) {
@ -325,10 +325,13 @@ func TestService_HardRefresh_ListRefs_And_RemoveAllCaches_GitHub(t *testing.T) {
assert.GreaterOrEqual(t, len(files), 1) assert.GreaterOrEqual(t, len(files), 1)
assert.Equal(t, 2, service.repoFileCache.Len()) assert.Equal(t, 2, service.repoFileCache.Len())
refs, err = service.ListRefs(repositoryUrl, username, "fake-token", true) refs, err = service.ListRefs(repositoryUrl, username, "fake-token", false)
assert.Error(t, err) assert.Error(t, err)
assert.Equal(t, 0, service.repoRefCache.Len()) assert.Equal(t, 1, service.repoRefCache.Len())
refs, err = service.ListRefs(repositoryUrl, username, "fake-token", true)
assert.Error(t, err)
assert.Equal(t, 1, service.repoRefCache.Len())
// The relevant file caches should be removed too // The relevant file caches should be removed too
assert.Equal(t, 0, service.repoFileCache.Len()) assert.Equal(t, 0, service.repoFileCache.Len())
} }

@ -163,9 +163,10 @@ func (service *Service) LatestCommitID(repositoryURL, referenceName, username, p
// ListRefs will list target repository's references without cloning the repository // ListRefs will list target repository's references without cloning the repository
func (service *Service) ListRefs(repositoryURL, username, password string, hardRefresh bool) ([]string, error) { func (service *Service) ListRefs(repositoryURL, username, password string, hardRefresh bool) ([]string, error) {
refCacheKey := generateCacheKey(repositoryURL, password)
if service.cacheEnabled && hardRefresh { if service.cacheEnabled && hardRefresh {
// Should remove the cache explicitly, so that the following normal list can show the correct result // Should remove the cache explicitly, so that the following normal list can show the correct result
service.repoRefCache.Remove(repositoryURL) service.repoRefCache.Remove(refCacheKey)
// Remove file caches pointed to the same repository // Remove file caches pointed to the same repository
for _, fileCacheKey := range service.repoFileCache.Keys() { for _, fileCacheKey := range service.repoFileCache.Keys() {
key, ok := fileCacheKey.(string) key, ok := fileCacheKey.(string)
@ -179,7 +180,7 @@ func (service *Service) ListRefs(repositoryURL, username, password string, hardR
if service.repoRefCache != nil { if service.repoRefCache != nil {
// Lookup the refs cache first // Lookup the refs cache first
cache, ok := service.repoRefCache.Get(repositoryURL) cache, ok := service.repoRefCache.Get(refCacheKey)
if ok { if ok {
refs, success := cache.([]string) refs, success := cache.([]string)
if success { if success {
@ -211,7 +212,7 @@ func (service *Service) ListRefs(repositoryURL, username, password string, hardR
} }
if service.cacheEnabled && service.repoRefCache != nil { if service.cacheEnabled && service.repoRefCache != nil {
service.repoRefCache.Add(options.repositoryUrl, refs) service.repoRefCache.Add(refCacheKey, refs)
} }
return refs, nil return refs, nil
} }

Loading…
Cancel
Save