Skip to content

Commit 1601768

Browse files
authored
Remove separate goroutine and just wait on the main WaitGroup
1 parent 9b40ce4 commit 1601768

File tree

1 file changed

+15
-27
lines changed

1 file changed

+15
-27
lines changed

sentinel.go

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -570,44 +570,32 @@ func (c *sentinelFailover) MasterAddr(ctx context.Context) (string, error) {
570570
masterAddr string
571571
wg sync.WaitGroup
572572
once sync.Once
573-
done = make(chan struct{})
574573
)
575574

576575
for i, sentinelAddr := range c.sentinelAddrs {
577576
wg.Add(1)
578577
go func(i int, addr string) {
579578
defer wg.Done()
580-
select {
581-
case <-done:
579+
sentinelCli := NewSentinelClient(c.opt.sentinelOptions(addr))
580+
addrVal, err := sentinelCli.GetMasterAddrByName(ctx, c.opt.MasterName).Result()
581+
if err != nil {
582+
internal.Logger.Printf(ctx, "sentinel: GetMasterAddrByName addr=%s, master=%q failed: %s",
583+
addr, c.opt.MasterName, err)
584+
_ = sentinelCli.Close()
582585
return
583-
default:
584-
sentinelCli := NewSentinelClient(c.opt.sentinelOptions(addr))
585-
addrVal, err := sentinelCli.GetMasterAddrByName(ctx, c.opt.MasterName).Result()
586-
if err != nil {
587-
internal.Logger.Printf(ctx, "sentinel: GetMasterAddrByName addr=%s, master=%q failed: %s",
588-
addr, c.opt.MasterName, err)
589-
_ = sentinelCli.Close()
590-
return
591-
}
592-
593-
once.Do(func() {
594-
masterAddr = net.JoinHostPort(addrVal[0], addrVal[1])
595-
// Push working sentinel to the top
596-
c.sentinelAddrs[0], c.sentinelAddrs[i] = c.sentinelAddrs[i], c.sentinelAddrs[0]
597-
c.setSentinel(ctx, sentinelCli)
598-
internal.Logger.Printf(ctx, "sentinel: selected addr=%s masterAddr=%s", addr, masterAddr)
599-
close(done)
600-
})
601586
}
587+
588+
once.Do(func() {
589+
masterAddr = net.JoinHostPort(addrVal[0], addrVal[1])
590+
// Push working sentinel to the top
591+
c.sentinelAddrs[0], c.sentinelAddrs[i] = c.sentinelAddrs[i], c.sentinelAddrs[0]
592+
c.setSentinel(ctx, sentinelCli)
593+
internal.Logger.Printf(ctx, "sentinel: selected addr=%s masterAddr=%s", addr, masterAddr)
594+
})
602595
}(i, sentinelAddr)
603596
}
604597

605-
go func() {
606-
wg.Wait()
607-
once.Do(func() { close(done) })
608-
}()
609-
610-
<-done
598+
wg.Wait()
611599

612600
if masterAddr != "" {
613601
return masterAddr, nil

0 commit comments

Comments
 (0)