mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-02 08:55:56 +08:00
* Add hybrid request handler Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add C++ sdk for createcollection and insertentities Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add RequestHandler Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add test case for hybrid insert Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix sqlite bug for createcollection Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add HybridQuery Handler DBImpl and ExecBinaryQuery Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add HybridSearch sdk Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add HybridSearch test case Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix HybridSearch bug Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix HybridSearch crash bug Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Change void* to vector<uint8_t> in Attr codec Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add context and new search task Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add merge for Hybrid Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add AST validation Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add unittest for hybrid Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix hybrid search nq bug Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix bugs after merge master Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix clang format Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix unittest bugs Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix Codacy Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix compact unittest bug Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Remove grpc request in hybridsearchcontext Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix some codacy quality issue Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix HYBRID_DB_TEST bug Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Annotate new search task Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add Hybrid RPC handler unittest Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Fix logs Signed-off-by: fishpenguin <kun.yu@zilliz.com> * Add HybridSearch unittest Signed-off-by: fishpenguin <kun.yu@zilliz.com>
117 lines
2.7 KiB
C++
117 lines
2.7 KiB
C++
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
// or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
#if 0
|
|
|
|
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "search/TaskInst.h"
|
|
|
|
namespace milvus {
|
|
namespace search {
|
|
|
|
void
|
|
TaskInst::Start() {
|
|
running_ = true;
|
|
load_thread_ = std::make_shared<std::thread>(&TaskInst::StartLoadTask, this);
|
|
exec_thread_ = std::make_shared<std::thread>(&TaskInst::StartExecuteTask, this);
|
|
}
|
|
|
|
void
|
|
TaskInst::Stop() {
|
|
running_ = false;
|
|
StopExecuteTask();
|
|
StopLoadTask();
|
|
}
|
|
|
|
std::queue<TaskPtr>&
|
|
TaskInst::load_queue() {
|
|
return load_queue_;
|
|
}
|
|
|
|
std::queue<TaskPtr>&
|
|
TaskInst::exec_queue() {
|
|
return exec_queue_;
|
|
}
|
|
|
|
std::condition_variable&
|
|
TaskInst::load_cv() {
|
|
return load_cv_;
|
|
}
|
|
|
|
std::condition_variable&
|
|
TaskInst::exec_cv() {
|
|
return exec_cv_;
|
|
}
|
|
|
|
void
|
|
TaskInst::StartLoadTask() {
|
|
while (running_) {
|
|
std::unique_lock<std::mutex> lock(load_mutex_);
|
|
load_cv_.wait(lock, [this] { return !load_queue_.empty(); });
|
|
while (!load_queue_.empty()) {
|
|
auto task = load_queue_.front();
|
|
task->Load();
|
|
load_queue_.pop();
|
|
exec_queue_.push(task);
|
|
exec_cv_.notify_one();
|
|
}
|
|
}
|
|
}
|
|
|
|
void
|
|
TaskInst::StartExecuteTask() {
|
|
while (running_) {
|
|
std::unique_lock<std::mutex> lock(exec_mutex_);
|
|
exec_cv_.wait(lock, [this] { return !exec_queue_.empty(); });
|
|
while (!exec_queue_.empty()) {
|
|
auto task = exec_queue_.front();
|
|
task->Execute();
|
|
exec_queue_.pop();
|
|
}
|
|
}
|
|
}
|
|
|
|
void
|
|
TaskInst::StopLoadTask() {
|
|
{
|
|
std::lock_guard<std::mutex> lock(load_mutex_);
|
|
load_queue_.push(nullptr);
|
|
load_cv_.notify_one();
|
|
if (load_thread_->joinable()) {
|
|
load_thread_->join();
|
|
}
|
|
load_thread_ = nullptr;
|
|
}
|
|
}
|
|
|
|
void
|
|
TaskInst::StopExecuteTask() {
|
|
{
|
|
std::lock_guard<std::mutex> lock(exec_mutex_);
|
|
exec_queue_.push(nullptr);
|
|
exec_cv_.notify_one();
|
|
if (exec_thread_->joinable()) {
|
|
exec_thread_->join();
|
|
}
|
|
exec_thread_ = nullptr;
|
|
}
|
|
}
|
|
|
|
} // namespace search
|
|
} // namespace milvus
|
|
|
|
#endif
|