From 0d3da0b84124cd56aa1c6453a6e6756a8fa5d8a4 Mon Sep 17 00:00:00 2001 From: wxyu Date: Tue, 8 Oct 2019 15:03:16 +0800 Subject: [PATCH 1/2] MS-611 Add resources validity check in ResourceMgr Former-commit-id: 0957d8980a07a07434bc2bea3ecff686a56cb127 --- cpp/src/scheduler/ResourceMgr.cpp | 4 ++++ cpp/src/scheduler/task/SearchTask.cpp | 1 + 2 files changed, 5 insertions(+) diff --git a/cpp/src/scheduler/ResourceMgr.cpp b/cpp/src/scheduler/ResourceMgr.cpp index 3ea8a56ef8..d9da1f16bf 100644 --- a/cpp/src/scheduler/ResourceMgr.cpp +++ b/cpp/src/scheduler/ResourceMgr.cpp @@ -104,6 +104,10 @@ ResourceMgr::Connect(const std::string& name1, const std::string& name2, Connect void ResourceMgr::Clear() { std::lock_guard lck(resources_mutex_); + if (running_) { + ENGINE_LOG_ERROR << "ResourceMgr is running, cannot clear."; + return; + } disk_resources_.clear(); cpu_resources_.clear(); gpu_resources_.clear(); diff --git a/cpp/src/scheduler/task/SearchTask.cpp b/cpp/src/scheduler/task/SearchTask.cpp index 2beff8f4c3..41e6582047 100644 --- a/cpp/src/scheduler/task/SearchTask.cpp +++ b/cpp/src/scheduler/task/SearchTask.cpp @@ -34,6 +34,7 @@ static constexpr size_t PARALLEL_REDUCE_BATCH = 1000; std::mutex XSearchTask::merge_mutex_; +// TODO(wxyu): remove unused code // bool // NeedParallelReduce(uint64_t nq, uint64_t topk) { // server::ServerConfig &config = server::ServerConfig::GetInstance(); From d0e7744abce4e26a002c119f8bfe17e17e18a9d3 Mon Sep 17 00:00:00 2001 From: wxyu Date: Tue, 8 Oct 2019 15:24:50 +0800 Subject: [PATCH 2/2] MS-611 Add resources validity check in ResourceMgr Former-commit-id: cc00283529c2e56ee9829c2f42d7c217d1ba3f42 --- cpp/src/scheduler/JobMgr.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cpp/src/scheduler/JobMgr.cpp b/cpp/src/scheduler/JobMgr.cpp index 25a4932f03..bf22f7be2e 100644 --- a/cpp/src/scheduler/JobMgr.cpp +++ b/cpp/src/scheduler/JobMgr.cpp @@ -66,12 +66,10 @@ JobMgr::worker_function() { } auto tasks = build_task(job); - auto disk_list = res_mgr_->GetDiskResources(); - if (!disk_list.empty()) { - if (auto disk = disk_list[0].lock()) { - for (auto& task : tasks) { - disk->task_table().Put(task); - } + // disk resources NEVER be empty. + if (auto disk = res_mgr_->GetDiskResources()[0].lock()) { + for (auto& task : tasks) { + disk->task_table().Put(task); } } }