From 8795284a761070e165d9d5481259edda2fba1ce6 Mon Sep 17 00:00:00 2001 From: fschade Date: Fri, 8 Aug 2025 08:37:49 +0200 Subject: [PATCH] fix(search): potential nil slice entries --- services/search/pkg/opensearch/engine.go | 14 ++++++++++---- services/search/pkg/opensearch/os_dsl.go | 6 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/services/search/pkg/opensearch/engine.go b/services/search/pkg/opensearch/engine.go index 3c68e385d3..98b5df0b00 100644 --- a/services/search/pkg/opensearch/engine.go +++ b/services/search/pkg/opensearch/engine.go @@ -120,12 +120,12 @@ func (e *Engine) Search(ctx context.Context, sir *searchService.SearchIndexReque return nil, fmt.Errorf("failed to search: %w", err) } - matches := make([]*searchMessage.Match, len(resp.Hits.Hits)) + matches := make([]*searchMessage.Match, 0, len(resp.Hits.Hits)) totalMatches := resp.Hits.Total.Value - for i, hit := range resp.Hits.Hits { + for _, hit := range resp.Hits.Hits { match, err := searchHitToSearchMessageMatch(hit) if err != nil { - return nil, fmt.Errorf("failed to convert hit %d: %w", i, err) + return nil, fmt.Errorf("failed to convert hit to match: %w", err) } if sir.Ref != nil { @@ -139,7 +139,7 @@ func (e *Engine) Search(ctx context.Context, sir *searchService.SearchIndexReque } } - matches[i] = match + matches = append(matches, match) } return &searchService.SearchIndexResponse{ @@ -218,6 +218,9 @@ func (e *Engine) Purge(id string) error { req, err := BuildDocumentDeleteByQueryReq( opensearchgoAPI.DocumentDeleteByQueryReq{ Indices: []string{e.index}, + Params: opensearchgoAPI.DocumentDeleteByQueryParams{ + WaitForCompletion: conversions.ToPointer(true), + }, }, NewTermQuery[string]("Path").Value(resource.Path), ) @@ -268,6 +271,9 @@ func (e *Engine) updateSelfAndDescendants(id string, scriptProvider func(engine. req, err := BuildUpdateByQueryReq( opensearchgoAPI.UpdateByQueryReq{ Indices: []string{e.index}, + Params: opensearchgoAPI.UpdateByQueryParams{ + WaitForCompletion: conversions.ToPointer(true), + }, }, NewTermQuery[string]("Path").Value(resource.Path), UpdateByQueryReqOptions{ diff --git a/services/search/pkg/opensearch/os_dsl.go b/services/search/pkg/opensearch/os_dsl.go index 5af3b9998c..dad92b3292 100644 --- a/services/search/pkg/opensearch/os_dsl.go +++ b/services/search/pkg/opensearch/os_dsl.go @@ -84,8 +84,8 @@ func applyBuilders(target map[string]any, key string, bs ...Builder) error { return nil } - builders := make([]map[string]any, len(bs)) - for i, builder := range bs { + builders := make([]map[string]any, 0, len(bs)) + for _, builder := range bs { data, err := builder.Map() switch { case err != nil: @@ -93,7 +93,7 @@ func applyBuilders(target map[string]any, key string, bs ...Builder) error { case isEmpty(data): continue default: - builders[i] = data + builders = append(builders, data) } }