From c07aa9a0158d157baa3e706b92071243cd1dd126 Mon Sep 17 00:00:00 2001 From: fishpenguin Date: Tue, 26 Nov 2019 10:19:49 +0800 Subject: [PATCH] BuildIndex stop when do build index and search simultaneously --- CHANGELOG.md | 1 + core/src/scheduler/BuildMgr.h | 5 +++++ core/src/scheduler/TaskTable.cpp | 3 ++- core/src/scheduler/resource/Resource.cpp | 5 ++++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccbbe9f64e..d24663b896 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#440 - Server cannot startup with gpu_resource_config.enable=false in GPU version - \#458 - Index data is not compatible between 0.5 and 0.6 - \#486 - gpu no usage during index building +- \#530 - BuildIndex stop when do build index and search simultaneously ## Feature - \#12 - Pure CPU version for Milvus diff --git a/core/src/scheduler/BuildMgr.h b/core/src/scheduler/BuildMgr.h index 805c01aafd..3c466421a0 100644 --- a/core/src/scheduler/BuildMgr.h +++ b/core/src/scheduler/BuildMgr.h @@ -55,6 +55,11 @@ class BuildMgr { } } + int64_t + NumOfAvailable() { + return available_; + } + private: std::int64_t available_; std::mutex mutex_; diff --git a/core/src/scheduler/TaskTable.cpp b/core/src/scheduler/TaskTable.cpp index 425eb0ab06..1bb6525215 100644 --- a/core/src/scheduler/TaskTable.cpp +++ b/core/src/scheduler/TaskTable.cpp @@ -178,7 +178,8 @@ TaskTable::PickToLoad(uint64_t limit) { // if task is a build index task, limit it if (task->Type() == TaskType::BuildIndexTask && task->path().Current() == "cpu") { - if (not BuildMgrInst::GetInstance()->Take()) { + if (BuildMgrInst::GetInstance()->NumOfAvailable() < 1) { + SERVER_LOG_WARNING << "BuildMgr doesnot have available place for building index"; continue; } } diff --git a/core/src/scheduler/resource/Resource.cpp b/core/src/scheduler/resource/Resource.cpp index 8cf03275f7..596d7da468 100644 --- a/core/src/scheduler/resource/Resource.cpp +++ b/core/src/scheduler/resource/Resource.cpp @@ -178,6 +178,10 @@ Resource::loader_function() { if (task_item == nullptr) { break; } + if (task_item->task->Type() == TaskType::BuildIndexTask && name() == "cpu") { + BuildMgrInst::GetInstance()->Take(); + SERVER_LOG_DEBUG << name() << " load BuildIndexTask"; + } LoadFile(task_item->task); task_item->Loaded(); if (task_item->from) { @@ -208,7 +212,6 @@ Resource::executor_function() { if (task_item == nullptr) { break; } - auto start = get_current_timestamp(); Process(task_item->task); auto finish = get_current_timestamp();