mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-12-03 20:39:36 +08:00
fix search error handle bug
Former-commit-id: dfded9c68611b0622581deebd1e94363566af432
This commit is contained in:
parent
125191557c
commit
b9c11671c4
@ -174,7 +174,7 @@ namespace {
|
||||
std::vector<TopKQueryResult> topk_query_result_array;
|
||||
{
|
||||
TimeRecorder rc(phase_name);
|
||||
Status stat = conn->SearchVector(TABLE_NAME, record_array, query_range_array, TOP_K, topk_query_result_array);
|
||||
Status stat = conn->SearchVector("qqq", record_array, query_range_array, TOP_K, topk_query_result_array);
|
||||
std::cout << "SearchVector function call status: " << stat.ToString() << std::endl;
|
||||
}
|
||||
|
||||
@ -244,11 +244,7 @@ ClientTest::Test(const std::string& address, const std::string& port) {
|
||||
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
|
||||
std::vector<RowRecord> null_record;
|
||||
RowRecord rowRecord;
|
||||
rowRecord.data.resize(0);
|
||||
null_record.push_back(rowRecord);
|
||||
Status stat = conn->InsertVector(TABLE_NAME, null_record, record_ids);
|
||||
Status stat = conn->InsertVector(TABLE_NAME, record_array, record_ids);
|
||||
auto finish = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "InsertVector cost: " << std::chrono::duration_cast<std::chrono::duration<double>>(finish - start).count() << "s\n";
|
||||
|
||||
|
@ -59,8 +59,14 @@ RequestHandler::InsertVector(::grpc::ServerContext* context, const ::milvus::grp
|
||||
RequestHandler::SearchVector(::grpc::ServerContext* context, const ::milvus::grpc::SearchVectorInfos* request, ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult>* writer) {
|
||||
std::vector<std::string> file_id_array;
|
||||
BaseTaskPtr task_ptr = SearchVectorTask::Create(*request, file_id_array, *writer);
|
||||
RequestScheduler::ExecTask(task_ptr, nullptr);
|
||||
return ::grpc::Status::OK;
|
||||
::milvus::grpc::Status grpc_status;
|
||||
RequestScheduler::ExecTask(task_ptr, &grpc_status);
|
||||
if (grpc_status.error_code() != SERVER_SUCCESS) {
|
||||
::grpc::Status status(::grpc::INVALID_ARGUMENT, grpc_status.reason());
|
||||
return status;
|
||||
} else {
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
}
|
||||
|
||||
::grpc::Status
|
||||
@ -96,8 +102,14 @@ RequestHandler::GetTableRowCount(::grpc::ServerContext* context, const ::milvus:
|
||||
::grpc::Status
|
||||
RequestHandler::ShowTables(::grpc::ServerContext* context, const ::milvus::grpc::Command* request, ::grpc::ServerWriter< ::milvus::grpc::TableName>* writer) {
|
||||
BaseTaskPtr task_ptr = ShowTablesTask::Create(*writer);
|
||||
RequestScheduler::ExecTask(task_ptr, nullptr);
|
||||
return ::grpc::Status::OK;
|
||||
::milvus::grpc::Status grpc_status;
|
||||
RequestScheduler::ExecTask(task_ptr, &grpc_status);
|
||||
if (grpc_status.error_code() != SERVER_SUCCESS) {
|
||||
::grpc::Status status(::grpc::UNKNOWN, grpc_status.reason());
|
||||
return status;
|
||||
} else {
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
}
|
||||
|
||||
::grpc::Status
|
||||
|
@ -486,7 +486,7 @@ ServerError SearchVectorTask::OnExecute() {
|
||||
|
||||
int top_k_ = search_vector_infos_.topk();
|
||||
|
||||
if(top_k_ <= 0) {
|
||||
if(top_k_ <= 0 || top_k_ > 1024) {
|
||||
return SetError(SERVER_INVALID_TOPK, "Invalid topk: " + std::to_string(
|
||||
top_k_));
|
||||
}
|
||||
@ -535,6 +535,16 @@ ServerError SearchVectorTask::OnExecute() {
|
||||
//TODO
|
||||
for (size_t i = 0; i < record_array_size; i++) {
|
||||
for (size_t j = 0; j < table_info.dimension_; j++) {
|
||||
if (search_vector_infos_.query_record_array(i).vector_data().empty()) {
|
||||
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Query record float array is empty");
|
||||
}
|
||||
uint64_t query_vec_dim = search_vector_infos_.query_record_array(i).vector_data().size();
|
||||
if (query_vec_dim != table_info.dimension_) {
|
||||
ServerError error_code = SERVER_INVALID_VECTOR_DIMENSION;
|
||||
std::string error_msg = "Invalid rowrecord dimension: " + std::to_string(query_vec_dim)
|
||||
+ " vs. table dimension:" + std::to_string(table_info.dimension_);
|
||||
return SetError(error_code, error_msg);
|
||||
}
|
||||
vec_f[i * table_info.dimension_ + j] = search_vector_infos_.query_record_array(i).vector_data(j);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user