From 45c7224d131b262eaff8aaaf2eb047f1cd9edabe Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Wed, 4 Sep 2024 17:22:30 -0700 Subject: [PATCH] fix: improves search on initital load (#3253) --- assets/composable/eventStreams.ts | 2 +- internal/web/logs.go | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/assets/composable/eventStreams.ts b/assets/composable/eventStreams.ts index 23f8054f..23c990ad 100644 --- a/assets/composable/eventStreams.ts +++ b/assets/composable/eventStreams.ts @@ -168,7 +168,7 @@ function useLogStream(url: Ref, loadMoreUrl?: Ref) { fetchingInProgress = true; try { const stopWatcher = watchOnce(url, () => abortController.abort("stream changed")); - const moreParams = { ...params.value, from: from.toISOString(), to: to.toISOString(), fill: "1" }; + const moreParams = { ...params.value, from: from.toISOString(), to: to.toISOString(), minimum: "100" }; const logs = await ( await fetch(withBase(`${loadMoreUrl.value}?${new URLSearchParams(moreParams).toString()}`), { signal }) ).text(); diff --git a/internal/web/logs.go b/internal/web/logs.go index 5d3d0ce4..55394a45 100644 --- a/internal/web/logs.go +++ b/internal/web/logs.go @@ -5,6 +5,7 @@ import ( "context" "errors" "regexp" + "strconv" "strings" "github.com/goccy/go-json" @@ -117,10 +118,27 @@ func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request) } } + minimum := 0 + if r.URL.Query().Has("minimum") { + minimum, err = strconv.Atoi(r.URL.Query().Get("minimum")) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + if minimum < 0 || minimum > buffer.Size { + http.Error(w, errors.New("minimum must be between 0 and buffer size").Error(), http.StatusBadRequest) + return + } + } + for { - if buffer.Len() > 0 { + if buffer.Len() > minimum { break } + + buffer.Clear() + events, err := containerService.LogsBetweenDates(r.Context(), from, to, stdTypes) if err != nil { log.Error().Err(err).Msg("error fetching logs") @@ -138,10 +156,6 @@ func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request) } } - if !r.URL.Query().Has("fill") { // only auto fill if fill query parameter is set - break - } - from = from.Add(-delta) delta = delta * 2