From 5f1d48391a994bba6bf0194f9702725750a1361d Mon Sep 17 00:00:00 2001 From: guochao Date: Thu, 6 Feb 2025 00:55:29 +0800 Subject: [PATCH] fix upstream selection when some upstream is not modified --- server.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/server.go b/server.go index 00f0d5e..eb54f47 100644 --- a/server.go +++ b/server.go @@ -463,6 +463,7 @@ func (server *Server) fastesUpstream(r *http.Request, lastModified time.Time) (r resultResponse, resultCh, resultErr = response, ch, err notModifiedCh <- idx }) + logger.Debug("voted not modified") 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 - if idx, ok := <-updateCh; ok { + select { + case idx := <-updateCh: resultIdx = idx slog.With("upstreamIdx", resultIdx).Debug("upstream selected") - } else if idx, ok := <-notModifiedCh; ok { - resultIdx = idx - slog.With("upstreamIdx", resultIdx).Debug("upstream selected(not modified)") - } else { - slog.Debug("no valid upstream found") + default: + select { + case idx := <-notModifiedCh: + resultIdx = idx + slog.With("upstreamIdx", resultIdx).Debug("all upstream not modified") + default: + slog.Debug("no valid upstream found") + } } return