@@ -570,44 +570,32 @@ func (c *sentinelFailover) MasterAddr(ctx context.Context) (string, error) {
570
570
masterAddr string
571
571
wg sync.WaitGroup
572
572
once sync.Once
573
- done = make (chan struct {})
574
573
)
575
574
576
575
for i , sentinelAddr := range c .sentinelAddrs {
577
576
wg .Add (1 )
578
577
go func (i int , addr string ) {
579
578
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 ()
582
585
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
- })
601
586
}
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
+ })
602
595
}(i , sentinelAddr )
603
596
}
604
597
605
- go func () {
606
- wg .Wait ()
607
- once .Do (func () { close (done ) })
608
- }()
609
-
610
- <- done
598
+ wg .Wait ()
611
599
612
600
if masterAddr != "" {
613
601
return masterAddr , nil
0 commit comments