diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index fecd87b302..a026353d0a 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -24,6 +24,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-578 - Make sure milvus5.0 don't crack 0.3.1 data - MS-585 - Update namespace in scheduler - MS-608 - Update TODO names +- MS-609 - Update task construct function ## New Feature diff --git a/cpp/src/scheduler/TaskCreator.cpp b/cpp/src/scheduler/TaskCreator.cpp index d503a5757c..4b848f7140 100644 --- a/cpp/src/scheduler/TaskCreator.cpp +++ b/cpp/src/scheduler/TaskCreator.cpp @@ -42,8 +42,8 @@ std::vector TaskCreator::Create(const SearchJobPtr& job) { std::vector tasks; for (auto& index_file : job->index_files()) { - auto task = std::make_shared(index_file.second); - task->label() = std::make_shared(); + auto label = std::make_shared(); + auto task = std::make_shared(index_file.second, label); task->job_ = job; tasks.emplace_back(task); } @@ -54,8 +54,8 @@ TaskCreator::Create(const SearchJobPtr& job) { std::vector TaskCreator::Create(const DeleteJobPtr& job) { std::vector tasks; - auto task = std::make_shared(job); - task->label() = std::make_shared(); + auto label = std::make_shared(); + auto task = std::make_shared(job, label); task->job_ = job; tasks.emplace_back(task); diff --git a/cpp/src/scheduler/task/DeleteTask.cpp b/cpp/src/scheduler/task/DeleteTask.cpp index 480fb86056..7610657f54 100644 --- a/cpp/src/scheduler/task/DeleteTask.cpp +++ b/cpp/src/scheduler/task/DeleteTask.cpp @@ -20,8 +20,8 @@ namespace milvus { namespace scheduler { -XDeleteTask::XDeleteTask(const scheduler::DeleteJobPtr& delete_job) - : Task(TaskType::DeleteTask), delete_job_(delete_job) { +XDeleteTask::XDeleteTask(const scheduler::DeleteJobPtr& delete_job, TaskLabelPtr label) + : Task(TaskType::DeleteTask, std::move(label)), delete_job_(delete_job) { } void diff --git a/cpp/src/scheduler/task/DeleteTask.h b/cpp/src/scheduler/task/DeleteTask.h index 75f0969bff..fd5222ba4e 100644 --- a/cpp/src/scheduler/task/DeleteTask.h +++ b/cpp/src/scheduler/task/DeleteTask.h @@ -25,7 +25,7 @@ namespace scheduler { class XDeleteTask : public Task { public: - explicit XDeleteTask(const scheduler::DeleteJobPtr& delete_job); + explicit XDeleteTask(const scheduler::DeleteJobPtr& delete_job, TaskLabelPtr label); void Load(LoadType type, uint8_t device_id) override; diff --git a/cpp/src/scheduler/task/SearchTask.cpp b/cpp/src/scheduler/task/SearchTask.cpp index 2c3c6f2288..2beff8f4c3 100644 --- a/cpp/src/scheduler/task/SearchTask.cpp +++ b/cpp/src/scheduler/task/SearchTask.cpp @@ -95,7 +95,8 @@ CollectFileMetrics(int file_type, size_t file_size) { } } -XSearchTask::XSearchTask(TableFileSchemaPtr file) : Task(TaskType::SearchTask), file_(file) { +XSearchTask::XSearchTask(TableFileSchemaPtr file, TaskLabelPtr label) + : Task(TaskType::SearchTask, std::move(label)), file_(file) { if (file_) { if (file_->metric_type_ != static_cast(MetricType::L2)) { metric_l2 = false; diff --git a/cpp/src/scheduler/task/SearchTask.h b/cpp/src/scheduler/task/SearchTask.h index 17104734ae..bd48d9244e 100644 --- a/cpp/src/scheduler/task/SearchTask.h +++ b/cpp/src/scheduler/task/SearchTask.h @@ -29,7 +29,7 @@ namespace scheduler { // TODO(wxyu): rewrite class XSearchTask : public Task { public: - explicit XSearchTask(TableFileSchemaPtr file); + explicit XSearchTask(TableFileSchemaPtr file, TaskLabelPtr label); void Load(LoadType type, uint8_t device_id) override; diff --git a/cpp/src/scheduler/task/Task.h b/cpp/src/scheduler/task/Task.h index c4b118e0c8..493adb419e 100644 --- a/cpp/src/scheduler/task/Task.h +++ b/cpp/src/scheduler/task/Task.h @@ -48,7 +48,7 @@ using TaskPtr = std::shared_ptr; // TODO: re-design class Task { public: - explicit Task(TaskType type) : type_(type) { + explicit Task(TaskType type, TaskLabelPtr label) : type_(type), label_(std::move(label)) { } /* diff --git a/cpp/src/scheduler/task/TestTask.cpp b/cpp/src/scheduler/task/TestTask.cpp index 76e814a628..d670bae4bb 100644 --- a/cpp/src/scheduler/task/TestTask.cpp +++ b/cpp/src/scheduler/task/TestTask.cpp @@ -21,7 +21,8 @@ namespace milvus { namespace scheduler { -TestTask::TestTask(TableFileSchemaPtr& file) : XSearchTask(file) { +TestTask::TestTask(TableFileSchemaPtr& file, TaskLabelPtr label) + : XSearchTask(file, std::move(label)) { } void @@ -42,7 +43,9 @@ TestTask::Execute() { void TestTask::Wait() { std::unique_lock lock(mutex_); - cv_.wait(lock, [&] { return done_; }); + cv_.wait(lock, [&] { + return done_; + }); } } // namespace scheduler diff --git a/cpp/src/scheduler/task/TestTask.h b/cpp/src/scheduler/task/TestTask.h index 3ad9cb16e1..99b48a8afe 100644 --- a/cpp/src/scheduler/task/TestTask.h +++ b/cpp/src/scheduler/task/TestTask.h @@ -24,7 +24,7 @@ namespace scheduler { class TestTask : public XSearchTask { public: - explicit TestTask(TableFileSchemaPtr& file); + explicit TestTask(TableFileSchemaPtr& file, TaskLabelPtr label); public: void diff --git a/cpp/src/wrapper/ConfAdapterMgr.h b/cpp/src/wrapper/ConfAdapterMgr.h index a88e090760..e376d91070 100644 --- a/cpp/src/wrapper/ConfAdapterMgr.h +++ b/cpp/src/wrapper/ConfAdapterMgr.h @@ -22,6 +22,7 @@ #include #include +#include namespace milvus { namespace engine { diff --git a/cpp/unittest/scheduler/task_test.cpp b/cpp/unittest/scheduler/task_test.cpp index ce91a62a52..07e85c723c 100644 --- a/cpp/unittest/scheduler/task_test.cpp +++ b/cpp/unittest/scheduler/task_test.cpp @@ -24,7 +24,7 @@ namespace milvus { namespace scheduler { TEST(TaskTest, INVALID_INDEX) { - auto search_task = std::make_shared(nullptr); + auto search_task = std::make_shared(nullptr, nullptr); search_task->Load(LoadType::TEST, 10); } diff --git a/cpp/unittest/scheduler/test_normal.cpp b/cpp/unittest/scheduler/test_normal.cpp index fb59b04214..1dbd93e044 100644 --- a/cpp/unittest/scheduler/test_normal.cpp +++ b/cpp/unittest/scheduler/test_normal.cpp @@ -54,7 +54,8 @@ TEST(NormalTest, INST_TEST) { ASSERT_FALSE(disks.empty()); if (auto observe = disks[0].lock()) { for (uint64_t i = 0; i < NUM_TASK; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); task->label() = std::make_shared(); tasks.push_back(task); observe->task_table().Put(task); diff --git a/cpp/unittest/scheduler/test_resource.cpp b/cpp/unittest/scheduler/test_resource.cpp index 7245761393..31fe425959 100644 --- a/cpp/unittest/scheduler/test_resource.cpp +++ b/cpp/unittest/scheduler/test_resource.cpp @@ -23,6 +23,7 @@ #include "scheduler/resource/TestResource.h" #include "scheduler/task/Task.h" #include "scheduler/task/TestTask.h" +#include "scheduler/tasklabel/DefaultLabel.h" #include "scheduler/ResourceFactory.h" #include @@ -185,7 +186,8 @@ TEST_F(ResourceAdvanceTest, DISK_RESOURCE_TEST) { std::vector> tasks; TableFileSchemaPtr dummy = nullptr; for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); tasks.push_back(task); disk_resource_->task_table().Put(task); } @@ -210,7 +212,8 @@ TEST_F(ResourceAdvanceTest, CPU_RESOURCE_TEST) { std::vector> tasks; TableFileSchemaPtr dummy = nullptr; for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); tasks.push_back(task); cpu_resource_->task_table().Put(task); } @@ -235,7 +238,8 @@ TEST_F(ResourceAdvanceTest, GPU_RESOURCE_TEST) { std::vector> tasks; TableFileSchemaPtr dummy = nullptr; for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); tasks.push_back(task); gpu_resource_->task_table().Put(task); } @@ -260,7 +264,8 @@ TEST_F(ResourceAdvanceTest, TEST_RESOURCE_TEST) { std::vector> tasks; TableFileSchemaPtr dummy = nullptr; for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); tasks.push_back(task); test_resource_->task_table().Put(task); } diff --git a/cpp/unittest/scheduler/test_resource_mgr.cpp b/cpp/unittest/scheduler/test_resource_mgr.cpp index 40633baa54..34e6b50c49 100644 --- a/cpp/unittest/scheduler/test_resource_mgr.cpp +++ b/cpp/unittest/scheduler/test_resource_mgr.cpp @@ -21,6 +21,7 @@ #include "scheduler/resource/DiskResource.h" #include "scheduler/resource/TestResource.h" #include "scheduler/task/TestTask.h" +#include "scheduler/tasklabel/DefaultLabel.h" #include "scheduler/ResourceMgr.h" #include @@ -184,7 +185,8 @@ TEST_F(ResourceMgrAdvanceTest, REGISTER_SUBSCRIBER) { }; mgr1_->RegisterSubscriber(callback); TableFileSchemaPtr dummy = nullptr; - disk_res->task_table().Put(std::make_shared(dummy)); + auto label = std::make_shared(); + disk_res->task_table().Put(std::make_shared(dummy, label)); sleep(1); ASSERT_TRUE(flag); } diff --git a/cpp/unittest/scheduler/test_scheduler.cpp b/cpp/unittest/scheduler/test_scheduler.cpp index 9666cc9812..1238f906d1 100644 --- a/cpp/unittest/scheduler/test_scheduler.cpp +++ b/cpp/unittest/scheduler/test_scheduler.cpp @@ -155,7 +155,8 @@ TEST_F(SchedulerTest, ON_LOAD_COMPLETED) { insert_dummy_index_into_gpu_cache(1); for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); task->label() = std::make_shared(); tasks.push_back(task); cpu_resource_.lock()->task_table().Put(task); @@ -174,7 +175,8 @@ TEST_F(SchedulerTest, PUSH_TASK_TO_NEIGHBOUR_RANDOMLY_TEST) { tasks.clear(); for (uint64_t i = 0; i < NUM; ++i) { - auto task = std::make_shared(dummy1); + auto label = std::make_shared(); + auto task = std::make_shared(dummy1, label); task->label() = std::make_shared(); tasks.push_back(task); cpu_resource_.lock()->task_table().Put(task); @@ -242,7 +244,8 @@ TEST_F(SchedulerTest2, SPECIFIED_RESOURCE_TEST) { dummy->location_ = "location"; for (uint64_t i = 0; i < NUM; ++i) { - std::shared_ptr task = std::make_shared(dummy); + auto label = std::make_shared(); + std::shared_ptr task = std::make_shared(dummy, label); task->label() = std::make_shared(disk_); tasks.push_back(task); disk_.lock()->task_table().Put(task); diff --git a/cpp/unittest/scheduler/test_tasktable.cpp b/cpp/unittest/scheduler/test_tasktable.cpp index 3cfbb5a27f..271826614d 100644 --- a/cpp/unittest/scheduler/test_tasktable.cpp +++ b/cpp/unittest/scheduler/test_tasktable.cpp @@ -18,6 +18,7 @@ #include "scheduler/TaskTable.h" #include "scheduler/task/TestTask.h" +#include "scheduler/tasklabel/DefaultLabel.h" #include namespace { @@ -172,8 +173,9 @@ class TaskTableBaseTest : public ::testing::Test { SetUp() override { ms::TableFileSchemaPtr dummy = nullptr; invalid_task_ = nullptr; - task1_ = std::make_shared(dummy); - task2_ = std::make_shared(dummy); + auto label = std::make_shared(); + task1_ = std::make_shared(dummy, label); + task2_ = std::make_shared(dummy, label); } ms::TaskPtr invalid_task_; @@ -340,7 +342,8 @@ class TaskTableAdvanceTest : public ::testing::Test { SetUp() override { ms::TableFileSchemaPtr dummy = nullptr; for (uint64_t i = 0; i < 8; ++i) { - auto task = std::make_shared(dummy); + auto label = std::make_shared(); + auto task = std::make_shared(dummy, label); table1_.Put(task); }