Skip to content

Commit 24447d0

Browse files
authored
add a lock for safety (#467)
1 parent 6ee8654 commit 24447d0

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

go/vt/vtgateproxy/discovery.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type JSONGateResolver struct {
6666
clientConn resolver.ClientConn
6767
poolType string
6868
currentAddrs []resolver.Address
69+
mu sync.Mutex
6970
}
7071

7172
func (r *JSONGateResolver) ResolveNow(o resolver.ResolveNowOptions) {}
@@ -398,6 +399,11 @@ func (b *JSONGateResolverBuilder) update(r *JSONGateResolver) error {
398399

399400
targets := b.getTargets(r.poolType)
400401

402+
// There should only ever be a single goroutine calling update on a given Resolver,
403+
// but add a lock just in case to ensure that the r.currentAddrs are in fact synchronized
404+
r.mu.Lock()
405+
defer r.mu.Unlock()
406+
401407
var addrs []resolver.Address
402408
for _, target := range targets {
403409
addrs = append(addrs, resolver.Address{Addr: target.Addr, Attributes: attributes.New(PoolTypeAttr, r.poolType)})

0 commit comments

Comments
 (0)