From 414be9021d1e116c62e4bebc3ebdbc1c45515aaa Mon Sep 17 00:00:00 2001 From: starlord Date: Fri, 9 Aug 2019 18:19:07 +0800 Subject: [PATCH] MS-330 Stability test failed caused by server core dumped Former-commit-id: 66079f9b51b0e40adfc6dfbcf2d2156431124ebb --- cpp/CHANGELOG.md | 1 + cpp/src/db/Utils.cpp | 4 +++- cpp/src/db/scheduler/task/IndexLoadTask.cpp | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index cf73d770e2..c18fd2b718 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 933ca06bd5..98a4f356df 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 f3aacf8352..d33828391a 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();