@@ -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