X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7c7dc19ffa0a20fff6d97e51c874bfaca9596b24..8d73164d5ca50e7af1b3752b4251eaf9f11a9fc8:/sdk/go/keepclient/discover.go diff --git a/sdk/go/keepclient/discover.go b/sdk/go/keepclient/discover.go index c5413d4a4b..4377c19515 100644 --- a/sdk/go/keepclient/discover.go +++ b/sdk/go/keepclient/discover.go @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + package keepclient import ( @@ -15,17 +19,23 @@ import ( ) // ClearCache clears the Keep service discovery cache. -func ClearCache() { +func RefreshServiceDiscovery() { svcListCacheMtx.Lock() defer svcListCacheMtx.Unlock() + var wg sync.WaitGroup for _, ent := range svcListCache { - ent.clear <- struct{}{} + wg.Add(1) + go func() { + ent.clear <- struct{}{} + wg.Done() + }() } + wg.Wait() } // ClearCacheOnSIGHUP installs a signal handler that calls // ClearCache when SIGHUP is received. -func ClearCacheOnSIGHUP() { +func RefreshServiceDiscoveryOnSIGHUP() { svcListCacheMtx.Lock() defer svcListCacheMtx.Unlock() if svcListCacheSignal != nil { @@ -35,7 +45,7 @@ func ClearCacheOnSIGHUP() { signal.Notify(svcListCacheSignal, syscall.SIGHUP) go func() { for range svcListCacheSignal { - ClearCache() + RefreshServiceDiscovery() } }() }