From 426d711d0bf0deecbc4780f8107af57fcdcf2246 Mon Sep 17 00:00:00 2001 From: "arraykeys@gmail.com" Date: Thu, 24 Jan 2019 16:34:49 +0800 Subject: [PATCH] a --- utils/lb/lb.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/utils/lb/lb.go b/utils/lb/lb.go index 173b89b..5fb0cbf 100644 --- a/utils/lb/lb.go +++ b/utils/lb/lb.go @@ -72,10 +72,15 @@ func NewGroup(selectType int, configs BackendsConfig, dr *dnsx.DomainResolver, l bks: bks, } } + 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 { - return g.bks[0].Address + return false, g.bks[0].Address } if onlyHa { 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) printDebug(true, g.log, nil, srcAddr, (*g.selector).Backends()) } - return g.last.Address + return false, g.last.Address } g.last = (*g.selector).SelectBackend(srcAddr) if !g.last.Active && g.last.ConnectUsedMillisecond > 0 { 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) - 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) {