This commit is contained in:
arraykeys@gmail.com
2019-01-24 16:34:49 +08:00
parent b336b9ce03
commit 426d711d0b

View File

@ -72,10 +72,15 @@ func NewGroup(selectType int, configs BackendsConfig, dr *dnsx.DomainResolver, l
bks: bks, bks: bks,
} }
} }
func (g *Group) Select(srcAddr string, onlyHa bool) (addr string) { func (g *Group) Select(srcAddr string, onlyHa bool) (addr string) {
addr="" _, addr = g.Select2(srcAddr, onlyHa)
return
}
func (g *Group) Select2(srcAddr string, onlyHa bool) (isEmpty bool, addr string) {
addr = ""
if len(g.bks) == 1 { if len(g.bks) == 1 {
return g.bks[0].Address return false, g.bks[0].Address
} }
if onlyHa { if onlyHa {
g.lock.Lock() g.lock.Lock()
@ -85,16 +90,20 @@ func (g *Group) Select(srcAddr string, onlyHa bool) (addr string) {
g.log.Printf("############ choosed %s from lastest ############", g.last.Address) g.log.Printf("############ choosed %s from lastest ############", g.last.Address)
printDebug(true, g.log, nil, srcAddr, (*g.selector).Backends()) printDebug(true, g.log, nil, srcAddr, (*g.selector).Backends())
} }
return g.last.Address return false, g.last.Address
} }
g.last = (*g.selector).SelectBackend(srcAddr) g.last = (*g.selector).SelectBackend(srcAddr)
if !g.last.Active && g.last.ConnectUsedMillisecond > 0 { if !g.last.Active && g.last.ConnectUsedMillisecond > 0 {
g.log.Printf("###warn### lb selected empty , return default , for : %s", srcAddr) g.log.Printf("###warn### lb selected empty , return default , for : %s", srcAddr)
} }
return g.last.Address return true, g.last.Address
} }
b := (*g.selector).SelectBackend(srcAddr) b := (*g.selector).SelectBackend(srcAddr)
return b.Address if !b.Active && b.ConnectUsedMillisecond > 0 {
g.log.Printf("###warn### lb selected empty , return default , for : %s", srcAddr)
return true, b.Address
}
return false, b.Address
} }
func (g *Group) IncreasConns(addr string) { func (g *Group) IncreasConns(addr string) {