diff --git a/internal/errors/lb.go b/internal/errors/lb.go index 5215f366c6..c7eceeb5dd 100644 --- a/internal/errors/lb.go +++ b/internal/errors/lb.go @@ -25,4 +25,9 @@ var ( // ErrIndexNotFound represents an error that the index not found. ErrIndexNotFound = New("index not found") + + // ErrInvalidSearchConfig represents an error that the invalid Search Configuration. + ErrInvalidSearchConfig = func(msg string) error { + return Errorf("Invalid Search_Config: %s", msg) + } ) diff --git a/pkg/gateway/lb/handler/grpc/aggregation.go b/pkg/gateway/lb/handler/grpc/aggregation.go index 24ad0925cd..674af408d0 100644 --- a/pkg/gateway/lb/handler/grpc/aggregation.go +++ b/pkg/gateway/lb/handler/grpc/aggregation.go @@ -65,6 +65,10 @@ func (s *server) aggregationSearch( } }() + if bcfg == nil { + return nil, nil, errors.ErrInvalidSearchConfig("bcfg is nil in aggregationSearch") + } + num := aggr.GetNum() min := int(bcfg.GetMinNum()) diff --git a/pkg/gateway/lb/handler/grpc/handler.go b/pkg/gateway/lb/handler/grpc/handler.go index ca21f84083..ee7ec9ce16 100644 --- a/pkg/gateway/lb/handler/grpc/handler.go +++ b/pkg/gateway/lb/handler/grpc/handler.go @@ -438,6 +438,28 @@ func (s *server) doSearch( } }() + if cfg == nil { + err = errors.ErrInvalidSearchConfig("search config is nil in doSearch") + err = status.WrapWithInvalidArgument(apiName+"/doSearch", err, &errdetails.RequestInfo{ + RequestId: "Search_Config is nil", + ServingData: "Search_Config is nil", + }, + &errdetails.BadRequest{ + FieldViolations: []*errdetails.BadRequestFieldViolation{ + { + Field: "Search_Config is nil", + Description: err.Error(), + }, + }, + }) + if span != nil { + span.RecordError(err) + span.SetAttributes(trace.StatusCodeInvalidArgument(err.Error())...) + span.SetStatus(trace.StatusError, err.Error()) + } + return nil, nil, err + } + var ( num = int(cfg.GetNum()) fnum int diff --git a/pkg/tools/cli/loadtest/service/search.go b/pkg/tools/cli/loadtest/service/search.go index e01be7c943..3f7d34e4fe 100644 --- a/pkg/tools/cli/loadtest/service/search.go +++ b/pkg/tools/cli/loadtest/service/search.go @@ -34,6 +34,11 @@ func searchRequestProvider(dataset assets.Dataset) (func() any, int, error) { } ret = &payload.Search_Request{ Vector: v.([]float32), + Config: &payload.Search_Config{ + Num: 10, + Radius: -1, + Epsilon: 0.1, + }, } } return ret