diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index cf73d770e2694b8923958335e04b9a772e8d4d13..c18fd2b718cb0c59c54d4ea4249196da344a5034 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -21,6 +21,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-235 - Some test cases random fail - MS-236 - Add MySQLMetaImpl::HasNonIndexFiles - MS-257 - Update bzip2 download url +- MS-330 - Stability test failed caused by server core dumped ## Improvement - MS-156 - Add unittest for merge result functions diff --git a/cpp/src/db/Utils.cpp b/cpp/src/db/Utils.cpp index 933ca06bd55e05828294895e4fa225096a9dd6fe..98a4f356df83e3d332e2c1d7d1e2352e0f1e3fc0 100644 --- a/cpp/src/db/Utils.cpp +++ b/cpp/src/db/Utils.cpp @@ -131,7 +131,9 @@ Status GetTableFilePath(const DBMetaOptions& options, meta::TableFileSchema& tab } } - return Status::Error("Table file doesn't exist: " + table_file.file_id_); + std::string msg = "Table file doesn't exist: " + table_file.file_id_; + ENGINE_LOG_ERROR << msg; + return Status::Error(msg); } Status DeleteTableFilePath(const DBMetaOptions& options, meta::TableFileSchema& table_file) { diff --git a/cpp/src/db/scheduler/task/IndexLoadTask.cpp b/cpp/src/db/scheduler/task/IndexLoadTask.cpp index f3aacf83528aa2cd6b8fea646c0fc833f54883cd..d33828391aa090d7b93ac722152f3c71c2b43bd0 100644 --- a/cpp/src/db/scheduler/task/IndexLoadTask.cpp +++ b/cpp/src/db/scheduler/task/IndexLoadTask.cpp @@ -46,7 +46,20 @@ std::shared_ptr IndexLoadTask::Execute() { ExecutionEnginePtr index_ptr = EngineFactory::Build(file_->dimension_, file_->location_, (EngineType)file_->engine_type_); - index_ptr->Load(); + + try { + index_ptr->Load(); + } catch (std::exception& ex) { + //typical error: out of disk space or permition denied + std::string msg = "Failed to load index file: " + std::string(ex.what()); + ENGINE_LOG_ERROR << msg; + + for(auto& context : search_contexts_) { + context->IndexSearchDone(file_->id_);//mark as done avoid dead lock, even failed + } + + return nullptr; + } size_t file_size = index_ptr->PhysicalSize();