diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 025af08e307fbbab3773aed9f80dc8b29042d99f..0346e0613838fb5797bccff6e2067d53d2c1d6e5 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -41,6 +41,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-400 - Add timestamp record in task state change function - MS-402 - Add dump implementation for TaskTableItem - MS-404 - Release index after search task done avoid memory increment continues +- MS-405 - Add delete task support ## New Feature - MS-343 - Implement ResourceMgr diff --git a/cpp/src/scheduler/task/DeleteTask.cpp b/cpp/src/scheduler/task/DeleteTask.cpp index ee6b63b7708efe9511800d12542fe42cd4de509b..9f76de506e855a422d44057fb8b215f81707dd8b 100644 --- a/cpp/src/scheduler/task/DeleteTask.cpp +++ b/cpp/src/scheduler/task/DeleteTask.cpp @@ -6,10 +6,14 @@ #include "DeleteTask.h" + namespace zilliz { namespace milvus { namespace engine { +XDeleteTask::XDeleteTask(DeleteContextPtr &delete_context) + : delete_context_ptr_(delete_context) {} + void XDeleteTask::Load(LoadType type, uint8_t device_id) { @@ -17,12 +21,13 @@ XDeleteTask::Load(LoadType type, uint8_t device_id) { void XDeleteTask::Execute() { - + delete_context_ptr_->ResourceDone(); } TaskPtr XDeleteTask::Clone() { - return nullptr; + auto task = std::make_shared(delete_context_ptr_); + return task; } } diff --git a/cpp/src/scheduler/task/DeleteTask.h b/cpp/src/scheduler/task/DeleteTask.h index 9ca4e8b53ac172986884bf84e450b5edff9803b0..2b2662439104ff74ec3e40d56d8053da01b7e868 100644 --- a/cpp/src/scheduler/task/DeleteTask.h +++ b/cpp/src/scheduler/task/DeleteTask.h @@ -5,6 +5,7 @@ ******************************************************************************/ #pragma once +#include #include "Task.h" @@ -14,6 +15,9 @@ namespace engine { class XDeleteTask : public Task { public: + explicit + XDeleteTask(DeleteContextPtr &delete_context); + void Load(LoadType type, uint8_t device_id) override; @@ -22,6 +26,9 @@ public: TaskPtr Clone() override; + +public: + DeleteContextPtr delete_context_ptr_; }; } diff --git a/cpp/src/scheduler/task/Task.h b/cpp/src/scheduler/task/Task.h index 56716480977fe6b2c9a38094548c44c1792d04e9..4d78894d31048a43b4c2bc01b47a83f6f5777c52 100644 --- a/cpp/src/scheduler/task/Task.h +++ b/cpp/src/scheduler/task/Task.h @@ -35,6 +35,7 @@ public: virtual void Execute() = 0; + // TODO: dont use this method to support task move virtual TaskPtr Clone() = 0; diff --git a/cpp/src/scheduler/task/TaskConvert.cpp b/cpp/src/scheduler/task/TaskConvert.cpp index f29fd2960444c47bd9f15718770ffe1b93624869..43f70903dccd286bd2a55c92fac5f71c57b41192 100644 --- a/cpp/src/scheduler/task/TaskConvert.cpp +++ b/cpp/src/scheduler/task/TaskConvert.cpp @@ -22,8 +22,9 @@ TaskConvert(const ScheduleTaskPtr &schedule_task) { return task; } case ScheduleTaskType::kDelete: { - // TODO: convert to delete task - return nullptr; + auto delete_task = std::static_pointer_cast(schedule_task); + auto task = std::make_shared(delete_task->context_); + return task; } default: { // TODO: unexpected !!! diff --git a/cpp/src/scheduler/task/TaskConvert.h b/cpp/src/scheduler/task/TaskConvert.h index 471592f9933bf4203f805212e6131a463ad055bb..bfc2df760bce1280660badc0113a155b3912c309 100644 --- a/cpp/src/scheduler/task/TaskConvert.h +++ b/cpp/src/scheduler/task/TaskConvert.h @@ -4,9 +4,11 @@ * Proprietary and confidential. ******************************************************************************/ -#include "src/db/scheduler/task/IndexLoadTask.h" +#include "db/scheduler/task/DeleteTask.h" +#include "db/scheduler/task/IndexLoadTask.h" #include "Task.h" #include "SearchTask.h" +#include "DeleteTask.h" namespace zilliz { namespace milvus {