提交 d599e596 编写于 作者: P peng.xu

Merge branch 'branch-0.5.0' into '0.5.0'

#39 Create SQ8H index hang if using github server version

See merge request megasearch/milvus!762

Former-commit-id: cfd239ddc25a9222dd2740c629b7c35aae0b8932
...@@ -29,6 +29,7 @@ Please mark all change in change log and use the ticket from JIRA. ...@@ -29,6 +29,7 @@ Please mark all change in change log and use the ticket from JIRA.
- \#20 - C++ sdk example get grpc error - \#20 - C++ sdk example get grpc error
- \#23 - Add unittest to improve code coverage - \#23 - Add unittest to improve code coverage
- \#31 - make clang-format failed after run build.sh -l - \#31 - make clang-format failed after run build.sh -l
- \#39 - Create SQ8H index hang if using github server version
## Improvement ## Improvement
- MS-552 - Add and change the easylogging library - MS-552 - Add and change the easylogging library
......
...@@ -65,7 +65,7 @@ ExecutionEngineImpl::ExecutionEngineImpl(uint16_t dimension, const std::string& ...@@ -65,7 +65,7 @@ ExecutionEngineImpl::ExecutionEngineImpl(uint16_t dimension, const std::string&
: location_(location), dim_(dimension), index_type_(index_type), metric_type_(metric_type), nlist_(nlist) { : location_(location), dim_(dimension), index_type_(index_type), metric_type_(metric_type), nlist_(nlist) {
index_ = CreatetVecIndex(EngineType::FAISS_IDMAP); index_ = CreatetVecIndex(EngineType::FAISS_IDMAP);
if (!index_) { if (!index_) {
throw Exception(DB_ERROR, "Could not create VecIndex"); throw Exception(DB_ERROR, "Unsupported index type");
} }
TempMetaConf temp_conf; TempMetaConf temp_conf;
...@@ -111,7 +111,7 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { ...@@ -111,7 +111,7 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) {
break; break;
} }
default: { default: {
ENGINE_LOG_ERROR << "Invalid engine type"; ENGINE_LOG_ERROR << "Unsupported index type";
return nullptr; return nullptr;
} }
} }
...@@ -373,7 +373,7 @@ ExecutionEngineImpl::BuildIndex(const std::string& location, EngineType engine_t ...@@ -373,7 +373,7 @@ ExecutionEngineImpl::BuildIndex(const std::string& location, EngineType engine_t
auto to_index = CreatetVecIndex(engine_type); auto to_index = CreatetVecIndex(engine_type);
if (!to_index) { if (!to_index) {
throw Exception(DB_ERROR, "Could not create VecIndex"); throw Exception(DB_ERROR, "Unsupported index type");
} }
TempMetaConf temp_conf; TempMetaConf temp_conf;
......
...@@ -134,6 +134,7 @@ XBuildIndexTask::Execute() { ...@@ -134,6 +134,7 @@ XBuildIndexTask::Execute() {
ENGINE_LOG_DEBUG << "Failed to update file to index, mark file: " << table_file.file_id_ ENGINE_LOG_DEBUG << "Failed to update file to index, mark file: " << table_file.file_id_
<< " to to_delete"; << " to to_delete";
build_index_job->BuildIndexDone(to_index_id_);
to_index_engine_ = nullptr; to_index_engine_ = nullptr;
return; return;
} }
...@@ -148,6 +149,7 @@ XBuildIndexTask::Execute() { ...@@ -148,6 +149,7 @@ XBuildIndexTask::Execute() {
std::cout << "ERROR: failed to build index, index file is too large or gpu memory is not enough" std::cout << "ERROR: failed to build index, index file is too large or gpu memory is not enough"
<< std::endl; << std::endl;
build_index_job->BuildIndexDone(to_index_id_);
build_index_job->GetStatus() = Status(DB_ERROR, msg); build_index_job->GetStatus() = Status(DB_ERROR, msg);
to_index_engine_ = nullptr; to_index_engine_ = nullptr;
return; return;
...@@ -158,6 +160,9 @@ XBuildIndexTask::Execute() { ...@@ -158,6 +160,9 @@ XBuildIndexTask::Execute() {
meta_ptr->HasTable(file_->table_id_, has_table); meta_ptr->HasTable(file_->table_id_, has_table);
if (!has_table) { if (!has_table) {
meta_ptr->DeleteTableFiles(file_->table_id_); meta_ptr->DeleteTableFiles(file_->table_id_);
build_index_job->BuildIndexDone(to_index_id_);
build_index_job->GetStatus() = Status(DB_ERROR, "Table has been deleted, discard index file.");
to_index_engine_ = nullptr; to_index_engine_ = nullptr;
return; return;
} }
...@@ -177,6 +182,7 @@ XBuildIndexTask::Execute() { ...@@ -177,6 +182,7 @@ XBuildIndexTask::Execute() {
std::cout << "ERROR: failed to persist index file: " << table_file.location_ std::cout << "ERROR: failed to persist index file: " << table_file.location_
<< ", possible out of disk space" << std::endl; << ", possible out of disk space" << std::endl;
build_index_job->BuildIndexDone(to_index_id_);
build_index_job->GetStatus() = Status(DB_ERROR, msg); build_index_job->GetStatus() = Status(DB_ERROR, msg);
to_index_engine_ = nullptr; to_index_engine_ = nullptr;
return; return;
......
...@@ -94,6 +94,15 @@ ValidationUtil::ValidateTableIndexType(int32_t index_type) { ...@@ -94,6 +94,15 @@ ValidationUtil::ValidateTableIndexType(int32_t index_type) {
return Status(SERVER_INVALID_INDEX_TYPE, msg); return Status(SERVER_INVALID_INDEX_TYPE, msg);
} }
#ifndef CUSTOMIZATION
// special case, hybird index only available in customize faiss library
if (engine_type == static_cast<int>(engine::EngineType::FAISS_IVFSQ8H)) {
std::string msg = "Unsupported index type: " + std::to_string(index_type);
SERVER_LOG_ERROR << msg;
return Status(SERVER_INVALID_INDEX_TYPE, msg);
}
#endif
return Status::OK(); return Status::OK();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册