middleware/proxy: Make Unhealthy a pointer (#615)

Pointer updates are atomic so drop the sync.RWMutex as it is not needed
anymore. This also fixes the race introduced with dfc71df (although I
believe this is the first time we properly tested that code path).
This commit is contained in:
Miek Gieben
2017-04-13 16:26:05 +01:00
committed by GitHub
parent ef4fa66e67
commit acbf522ceb
6 changed files with 28 additions and 24 deletions

View File

@@ -38,10 +38,10 @@ func NewLookupWithOption(hosts []string, opts Options) Proxy {
Fails: 0,
FailTimeout: upstream.FailTimeout,
Unhealthy: false,
Unhealthy: newBool(),
CheckDown: func(upstream *staticUpstream) UpstreamHostDownFunc {
return func(uh *UpstreamHost) bool {
if uh.Unhealthy {
if *uh.Unhealthy {
return true
}
fails := atomic.LoadInt32(&uh.Fails)