projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '20138-fix-sync-test-race'
[arvados.git]
/
sdk
/
go
/
keepclient
/
discover.go
diff --git
a/sdk/go/keepclient/discover.go
b/sdk/go/keepclient/discover.go
index 2392fcde7bdc7475068bfac3452665daa2ef5a61..5eafbbe339a9d7d4baa29081a049aa5e924ac61f 100644
(file)
--- a/
sdk/go/keepclient/discover.go
+++ b/
sdk/go/keepclient/discover.go
@@
-6,6
+6,7
@@
package keepclient
import (
"encoding/json"
import (
"encoding/json"
+ "errors"
"fmt"
"log"
"os"
"fmt"
"log"
"os"
@@
-15,10
+16,10
@@
import (
"syscall"
"time"
"syscall"
"time"
- "git.
curoverse.com
/arvados.git/sdk/go/arvadosclient"
+ "git.
arvados.org
/arvados.git/sdk/go/arvadosclient"
)
)
-//
ClearCache
clears the Keep service discovery cache.
+//
RefreshServiceDiscovery
clears the Keep service discovery cache.
func RefreshServiceDiscovery() {
var wg sync.WaitGroup
defer wg.Wait()
func RefreshServiceDiscovery() {
var wg sync.WaitGroup
defer wg.Wait()
@@
-26,15
+27,16
@@
func RefreshServiceDiscovery() {
defer svcListCacheMtx.Unlock()
for _, ent := range svcListCache {
wg.Add(1)
defer svcListCacheMtx.Unlock()
for _, ent := range svcListCache {
wg.Add(1)
+ clear := ent.clear
go func() {
go func() {
-
ent.
clear <- struct{}{}
+ clear <- struct{}{}
wg.Done()
}()
}
}
wg.Done()
}()
}
}
-//
ClearCache
OnSIGHUP installs a signal handler that calls
-//
ClearCache
when SIGHUP is received.
+//
RefreshServiceDiscovery
OnSIGHUP installs a signal handler that calls
+//
RefreshServiceDiscovery
when SIGHUP is received.
func RefreshServiceDiscoveryOnSIGHUP() {
svcListCacheMtx.Lock()
defer svcListCacheMtx.Unlock()
func RefreshServiceDiscoveryOnSIGHUP() {
svcListCacheMtx.Lock()
defer svcListCacheMtx.Unlock()
@@
-136,6
+138,10
@@
func (kc *KeepClient) discoverServices() error {
return nil
}
return nil
}
+ if kc.Arvados.ApiServer == "" {
+ return fmt.Errorf("Arvados client is not configured (target API host is not set). Maybe env var ARVADOS_API_HOST should be set first?")
+ }
+
svcListCacheMtx.Lock()
cacheEnt, ok := svcListCache[kc.Arvados.ApiServer]
if !ok {
svcListCacheMtx.Lock()
cacheEnt, ok := svcListCache[kc.Arvados.ApiServer]
if !ok {
@@
-150,7
+156,12
@@
func (kc *KeepClient) discoverServices() error {
}
svcListCacheMtx.Unlock()
}
svcListCacheMtx.Unlock()
- return kc.loadKeepServers(<-cacheEnt.latest)
+ select {
+ case <-time.After(time.Minute):
+ return errors.New("timed out while getting initial list of keep services")
+ case sl := <-cacheEnt.latest:
+ return kc.loadKeepServers(sl)
+ }
}
func (kc *KeepClient) RefreshServiceDiscovery() {
}
func (kc *KeepClient) RefreshServiceDiscovery() {