fix upstream selection when some upstream is not modified
This commit is contained in:
parent
19e491c5a6
commit
5f1d48391a
19
server.go
19
server.go
@ -463,6 +463,7 @@ func (server *Server) fastesUpstream(r *http.Request, lastModified time.Time) (r
|
|||||||
resultResponse, resultCh, resultErr = response, ch, err
|
resultResponse, resultCh, resultErr = response, ch, err
|
||||||
notModifiedCh <- idx
|
notModifiedCh <- idx
|
||||||
})
|
})
|
||||||
|
logger.Debug("voted not modified")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,7 +479,7 @@ func (server *Server) fastesUpstream(r *http.Request, lastModified time.Time) (r
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
logger.Debug("voted")
|
logger.Debug("voted update")
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -486,14 +487,18 @@ func (server *Server) fastesUpstream(r *http.Request, lastModified time.Time) (r
|
|||||||
|
|
||||||
resultIdx = -1
|
resultIdx = -1
|
||||||
|
|
||||||
if idx, ok := <-updateCh; ok {
|
select {
|
||||||
|
case idx := <-updateCh:
|
||||||
resultIdx = idx
|
resultIdx = idx
|
||||||
slog.With("upstreamIdx", resultIdx).Debug("upstream selected")
|
slog.With("upstreamIdx", resultIdx).Debug("upstream selected")
|
||||||
} else if idx, ok := <-notModifiedCh; ok {
|
default:
|
||||||
resultIdx = idx
|
select {
|
||||||
slog.With("upstreamIdx", resultIdx).Debug("upstream selected(not modified)")
|
case idx := <-notModifiedCh:
|
||||||
} else {
|
resultIdx = idx
|
||||||
slog.Debug("no valid upstream found")
|
slog.With("upstreamIdx", resultIdx).Debug("all upstream not modified")
|
||||||
|
default:
|
||||||
|
slog.Debug("no valid upstream found")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user