// ClearCache clears the Keep service discovery cache.
func RefreshServiceDiscovery() {
+ var wg sync.WaitGroup
+ defer wg.Wait()
svcListCacheMtx.Lock()
defer svcListCacheMtx.Unlock()
- var wg sync.WaitGroup
for _, ent := range svcListCache {
wg.Add(1)
go func() {
wg.Done()
}()
}
- wg.Wait()
}
// ClearCacheOnSIGHUP installs a signal handler that calls
return kc.loadKeepServers(<-cacheEnt.latest)
}
+func (kc *KeepClient) RefreshServiceDiscovery() {
+ svcListCacheMtx.Lock()
+ ent, ok := svcListCache[kc.Arvados.ApiServer]
+ svcListCacheMtx.Unlock()
+ if !ok || kc.Arvados.KeepServiceURIs != nil || kc.disableDiscovery {
+ return
+ }
+ ent.clear <- struct{}{}
+}
+
// LoadKeepServicesFromJSON gets list of available keep services from
// given JSON and disables automatic service discovery.
func (kc *KeepClient) LoadKeepServicesFromJSON(services string) error {
// start api and keep servers
arvadostest.StartAPI()
arvadostest.StartKeep(2, false)
- keepclient.RefreshServiceDiscovery()
// make arvadosclient
arv, err := arvadosclient.MakeArvadosClient()
t.Fatalf("error creating KeepClient: %s", err)
}
keepClient.Want_replicas = 1
+ keepClient.RefreshServiceDiscovery()
// discover keep services
var servers []string