mirror of
https://github.com/coredns/coredns.git
synced 2025-12-07 19:05:19 -05:00
middleware/proxy: healthchecks fixes (#183)
* middleware/proxy: add spray keyword When spray is used, the proxy will, when all backend are down, spray to each target. When not used, default to the old defaults: max 1 failure and no spray. These defaults are also used when forwarding queries to another CoreDNS instance. Update the README with the new keyword. * typos * Make MaxFail = 1 again * more reversals
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package proxy
|
||||
|
||||
import (
|
||||
"log"
|
||||
"math/rand"
|
||||
"sync/atomic"
|
||||
)
|
||||
@@ -44,9 +45,6 @@ func (r *Random) Select(pool HostPool) *UpstreamHost {
|
||||
}
|
||||
}
|
||||
}
|
||||
if randHost == nil {
|
||||
return new(Spray).Select(pool)
|
||||
}
|
||||
return randHost
|
||||
}
|
||||
|
||||
@@ -58,6 +56,7 @@ type Spray struct{}
|
||||
func (r *Spray) Select(pool HostPool) *UpstreamHost {
|
||||
rnd := rand.Int() % len(pool)
|
||||
randHost := pool[rnd]
|
||||
log.Printf("[WARNING] All hosts reported as down, spraying to target: %s", randHost.Name)
|
||||
return randHost
|
||||
}
|
||||
|
||||
@@ -93,9 +92,6 @@ func (r *LeastConn) Select(pool HostPool) *UpstreamHost {
|
||||
}
|
||||
}
|
||||
}
|
||||
if bestHost == nil {
|
||||
return new(Spray).Select(pool)
|
||||
}
|
||||
return bestHost
|
||||
}
|
||||
|
||||
@@ -113,8 +109,5 @@ func (r *RoundRobin) Select(pool HostPool) *UpstreamHost {
|
||||
for i := uint32(1); host.Down() && i < poolLen; i++ {
|
||||
host = pool[(selection+i)%poolLen]
|
||||
}
|
||||
if host.Down() {
|
||||
return new(Spray).Select(pool)
|
||||
}
|
||||
return host
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user