feat: include search query in error messages
2 files changed, 11 insertions(+), 4 deletions(-)
changed files
M internal/index/search.go → internal/index/search.go
@@ -13,6 +13,7 @@ "alin.ovh/searchix/internal/nix" "alin.ovh/searchix/internal/storage" "github.com/Southclaws/fault" + "github.com/Southclaws/fault/fctx" "github.com/Southclaws/fault/fmsg" "github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2/search"@@ -92,10 +93,13 @@ bleveResult, err := index.index.SearchInContext(ctx, request) select { case <-ctx.Done(): - return nil, fault.Wrap(ctx.Err()) + return nil, fault.Wrap(ctx.Err(), fctx.With(ctx)) default: if err != nil { - return nil, fault.Wrap(err, fmsg.With("failed to execute search query")) + return nil, fault.Wrap(err, + fctx.With(ctx), + fmsg.Withf("failed to execute search query"), + ) } hits := func(yield func(DocumentMatch) bool) {
M internal/server/mux.go → internal/server/mux.go
@@ -24,6 +24,7 @@ "alin.ovh/searchix/internal/sentryhttp" "alin.ovh/x/log" "github.com/Southclaws/fault" + "github.com/Southclaws/fault/fctx" "github.com/Southclaws/fault/fmsg" "github.com/osdevisnot/sorvor/pkg/livereload" )@@ -98,6 +99,7 @@ } if r.URL.Query().Has("query") { qs := r.URL.Query().Get("query") + ctx := fctx.WithMeta(r.Context(), "search_query", qs) if len(qs) < 2 { errorHandler(w, r, "Query too short", http.StatusBadRequest)@@ -121,7 +123,7 @@ } } page := pagination.New(pageNumber, pageSize) - ctx, cancel := context.WithTimeout(r.Context(), cfg.Web.SearchTimeout.Duration) + ctx, cancel := context.WithTimeout(ctx, cfg.Web.SearchTimeout.Duration) results, err := index.Search(ctx, source, qs, page.From, page.Size) cancel()@@ -131,7 +133,8 @@ errorHandler(w, r, "Search timed out", http.StatusInternalServerError) return } - log.Error("search error", "error", err) + meta := fctx.Unwrap(err) + log.Error("search error", "error", err, "search_query", meta["search_query"]) errorHandler(w, r, err.Error(), http.StatusInternalServerError) return