Let search fail as if one query_node return error result (#15855)

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
pull/15861/head
Cai Yudong 2022-03-04 10:43:56 +08:00 committed by GitHub
parent 83c29ebe1c
commit 57b97ccb9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 2 deletions

View File

@ -1927,12 +1927,14 @@ func (st *searchTask) PostExecute(ctx context.Context) error {
// fmt.Println("searchResults: ", searchResults)
filterSearchResults := make([]*internalpb.SearchResults, 0)
var filterReason string
errNum := 0
for _, partialSearchResult := range searchResults {
if partialSearchResult.Status.ErrorCode == commonpb.ErrorCode_Success {
filterSearchResults = append(filterSearchResults, partialSearchResult)
// For debugging, please don't delete.
// printSearchResult(partialSearchResult)
} else {
errNum++
filterReason += partialSearchResult.Status.Reason + "\n"
}
}
@ -1941,7 +1943,7 @@ func (st *searchTask) PostExecute(ctx context.Context) error {
zap.Any("len(filterSearchResults)", len(filterSearchResults)))
metrics.ProxyWaitForSearchResultLatency.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.ProxyID, 10), st.collectionName, metrics.SearchLabel).Observe(float64(st.tr.RecordSpan().Milliseconds()))
tr.Record("Proxy Search PostExecute stage1 done")
if len(filterSearchResults) <= 0 {
if len(filterSearchResults) <= 0 || errNum > 0 {
st.result = &milvuspb.SearchResults{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
@ -1949,7 +1951,7 @@ func (st *searchTask) PostExecute(ctx context.Context) error {
},
CollectionName: st.collectionName,
}
return fmt.Errorf("no Available QueryNode result, filter reason %s: id %d", filterReason, st.ID())
return fmt.Errorf("QueryNode search fail, reason %s: id %d", filterReason, st.ID())
}
tr.Record("decodeResultStart")
validSearchResults, err := decodeSearchResults(filterSearchResults)