From e5343371f1449e7c7d84dfdd6e9ae4eff97d9a7c Mon Sep 17 00:00:00 2001 From: yukun Date: Thu, 15 Oct 2020 21:59:19 +0800 Subject: [PATCH] Return wrong entities when real result number is less than topk (#4003) * Server crashed when search using java-sdk Signed-off-by: fishpenguin * Return wrong entities when real result number is less than topk Signed-off-by: fishpenguin --- core/src/server/grpc_impl/GrpcRequestHandler.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/server/grpc_impl/GrpcRequestHandler.cpp b/core/src/server/grpc_impl/GrpcRequestHandler.cpp index 2ef80eb3bb..83f6fa4539 100644 --- a/core/src/server/grpc_impl/GrpcRequestHandler.cpp +++ b/core/src/server/grpc_impl/GrpcRequestHandler.cpp @@ -1837,7 +1837,14 @@ GrpcRequestHandler::Search(::grpc::ServerContext* context, const ::milvus::grpc: // step 6: construct and return result response->set_row_num(result->row_num_); int64_t id_size = result->result_ids_.size(); - grpc_entity->mutable_valid_row()->Resize(id_size, true); + for (int64_t i = 0; i < result->result_ids_.size(); i++) { + if (result->result_ids_[i] == -1) { + id_size--; + grpc_entity->add_valid_row(false); + } else { + grpc_entity->add_valid_row(true); + } + } CopyDataChunkToEntity(result->data_chunk_, field_mappings, id_size, grpc_entity);