From 468bef4478c5abf1812f156fb53d6084ec5b33fe Mon Sep 17 00:00:00 2001 From: xige-16 Date: Tue, 7 Sep 2021 14:25:59 +0800 Subject: [PATCH] Fix dataset's memory leak in knowWhere when search (#7527) Signed-off-by: xige-16 --- .../src/index/knowhere/knowhere/common/Dataset.h | 16 +++++++++++++++- internal/core/src/index/unittest/test_annoy.cpp | 4 ---- .../core/src/index/unittest/test_binaryidmap.cpp | 7 ------- .../core/src/index/unittest/test_binaryivf.cpp | 4 ---- .../src/index/unittest/test_customized_index.cpp | 4 ---- .../core/src/index/unittest/test_gpuresource.cpp | 4 ---- internal/core/src/index/unittest/test_hnsw.cpp | 5 ----- internal/core/src/index/unittest/test_idmap.cpp | 12 ------------ internal/core/src/index/unittest/test_ivf.cpp | 11 ----------- .../core/src/index/unittest/test_ivf_cpu_nm.cpp | 4 ---- .../core/src/index/unittest/test_ivf_gpu_nm.cpp | 4 ---- .../core/src/index/unittest/test_ivf_hnsw.cpp | 2 -- .../core/src/index/unittest/test_ngtonng.cpp | 5 ----- .../core/src/index/unittest/test_ngtpanng.cpp | 5 ----- internal/core/src/index/unittest/test_nsg.cpp | 7 ------- .../core/src/index/unittest/test_rhnsw_flat.cpp | 6 ------ .../core/src/index/unittest/test_rhnsw_pq.cpp | 6 ------ .../core/src/index/unittest/test_rhnsw_sq8.cpp | 6 ------ internal/core/src/index/unittest/test_sptag.cpp | 3 --- .../core/src/index/unittest/test_vecindex.cpp | 3 --- internal/core/src/query/SearchOnSealed.cpp | 15 --------------- 21 files changed, 15 insertions(+), 118 deletions(-) diff --git a/internal/core/src/index/knowhere/knowhere/common/Dataset.h b/internal/core/src/index/knowhere/knowhere/common/Dataset.h index 2d742799f9..b655a15679 100644 --- a/internal/core/src/index/knowhere/knowhere/common/Dataset.h +++ b/internal/core/src/index/knowhere/knowhere/common/Dataset.h @@ -17,6 +17,7 @@ #include #include #include +#include "knowhere/index/vector_index/helpers/IndexParameter.h" namespace milvus { namespace knowhere { @@ -27,7 +28,20 @@ using ValuePtr = std::shared_ptr; class Dataset { public: Dataset() = default; - + ~Dataset() { + for (auto const& d : data_) { + if (d.first == meta::IDS) { + auto row_data = Get(milvus::knowhere::meta::IDS); + // the space of ids must be allocated through malloc + free(row_data); + } + if (d.first == meta::DISTANCE) { + auto row_data = Get(milvus::knowhere::meta::DISTANCE); + // the space of distance must be allocated through malloc + free(row_data); + } + } + } template void Set(const std::string& k, T&& v) { diff --git a/internal/core/src/index/unittest/test_annoy.cpp b/internal/core/src/index/unittest/test_annoy.cpp index 4a3e352564..ae06c09b18 100644 --- a/internal/core/src/index/unittest/test_annoy.cpp +++ b/internal/core/src/index/unittest/test_annoy.cpp @@ -67,7 +67,6 @@ TEST_P(AnnoyTest, annoy_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); /* * output result to check by eyes @@ -107,11 +106,9 @@ TEST_P(AnnoyTest, annoy_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); /* * delete result checked by eyes @@ -217,7 +214,6 @@ TEST_P(AnnoyTest, annoy_slice) { ASSERT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_binaryidmap.cpp b/internal/core/src/index/unittest/test_binaryidmap.cpp index 03c51b6485..a5ce9c9f04 100644 --- a/internal/core/src/index/unittest/test_binaryidmap.cpp +++ b/internal/core/src/index/unittest/test_binaryidmap.cpp @@ -70,7 +70,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); auto binaryset = index_->Serialize(conf); auto new_index = std::make_shared(); @@ -78,7 +77,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_basic) { auto result2 = new_index->Query(query_dataset, conf, nullptr); AssertAnns(result2, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(result2); faiss::ConcurrentBitsetPtr concurrent_bitset_ptr = std::make_shared(nb); for (int64_t i = 0; i < nq; ++i) { @@ -87,7 +85,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_basic) { auto result_bs_1 = index_->Query(query_dataset, conf, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result_bs_1); // auto result4 = index_->SearchById(id_dataset, conf); // AssertAneq(result4, nq, k); @@ -116,7 +113,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_serialize) { auto re_result = index_->Query(query_dataset, conf, nullptr); AssertAnns(re_result, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(re_result); EXPECT_EQ(index_->Count(), nb); EXPECT_EQ(index_->Dim(), dim); auto binaryset = index_->Serialize(conf); @@ -136,7 +132,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_serialize) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } @@ -156,7 +151,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_slice) { auto re_result = index_->Query(query_dataset, conf, nullptr); AssertAnns(re_result, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(re_result); EXPECT_EQ(index_->Count(), nb); EXPECT_EQ(index_->Dim(), dim); auto binaryset = index_->Serialize(conf); @@ -167,7 +161,6 @@ TEST_P(BinaryIDMAPTest, binaryidmap_slice) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_binaryivf.cpp b/internal/core/src/index/unittest/test_binaryivf.cpp index 9d0b316b8a..c5bc8096f2 100644 --- a/internal/core/src/index/unittest/test_binaryivf.cpp +++ b/internal/core/src/index/unittest/test_binaryivf.cpp @@ -75,7 +75,6 @@ TEST_P(BinaryIVFTest, binaryivf_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); faiss::ConcurrentBitsetPtr concurrent_bitset_ptr = std::make_shared(nb); for (int64_t i = 0; i < nq; ++i) { @@ -84,7 +83,6 @@ TEST_P(BinaryIVFTest, binaryivf_basic) { auto result2 = index_->Query(query_dataset, conf, concurrent_bitset_ptr); AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); #if 0 auto result3 = index_->QueryById(id_dataset, conf, nullptr); @@ -149,7 +147,6 @@ TEST_P(BinaryIVFTest, binaryivf_serialize) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } @@ -165,6 +162,5 @@ TEST_P(BinaryIVFTest, binaryivf_slice) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_customized_index.cpp b/internal/core/src/index/unittest/test_customized_index.cpp index 88156d09b9..b882cccfaf 100644 --- a/internal/core/src/index/unittest/test_customized_index.cpp +++ b/internal/core/src/index/unittest/test_customized_index.cpp @@ -70,7 +70,6 @@ TEST_F(SingleIndexTest, IVFSQHybrid) { auto result = gpu_idx->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } } @@ -87,7 +86,6 @@ TEST_F(SingleIndexTest, IVFSQHybrid) { auto result = gpu_idx->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); milvus::json quantizer_conf{{milvus::knowhere::meta::DEVICEID, DEVICEID}, {"mode", 2}}; for (int i = 0; i < 2; ++i) { @@ -98,7 +96,6 @@ TEST_F(SingleIndexTest, IVFSQHybrid) { auto result = new_idx->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } @@ -119,7 +116,6 @@ TEST_F(SingleIndexTest, IVFSQHybrid) { AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); // PrintResult(result, nq, k); hybrid_idx->UnsetQuantizer(); - ReleaseQueryResult(result); } } } diff --git a/internal/core/src/index/unittest/test_gpuresource.cpp b/internal/core/src/index/unittest/test_gpuresource.cpp index e64cf13abd..d8dce8cb20 100644 --- a/internal/core/src/index/unittest/test_gpuresource.cpp +++ b/internal/core/src/index/unittest/test_gpuresource.cpp @@ -76,7 +76,6 @@ TEST_F(GPURESTEST, copyandsearch) { index_->AddWithoutIds(base_dataset, conf); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); index_->SetIndexSize(nb * dim * sizeof(float)); auto cpu_idx = milvus::knowhere::cloner::CopyGpuToCpu(index_, milvus::knowhere::Config()); @@ -90,7 +89,6 @@ TEST_F(GPURESTEST, copyandsearch) { // TimeRecorder tc("search&load"); for (int i = 0; i < search_count; ++i) { auto result = search_idx->Query(query_dataset, conf, nullptr); - ReleaseQueryResult(result); // if (i > search_count - 6 || i == 0) // tc.RecordSection("search once"); } @@ -110,7 +108,6 @@ TEST_F(GPURESTEST, copyandsearch) { milvus::knowhere::cloner::CopyCpuToGpu(cpu_idx, DEVICEID, milvus::knowhere::Config()); tc.RecordSection("Copy to gpu once"); auto result2 = search_idx->Query(query_dataset, conf, nullptr); - ReleaseQueryResult(result2); tc.RecordSection("Search once"); search_func(); tc.RecordSection("Search total cost"); @@ -150,7 +147,6 @@ TEST_F(GPURESTEST, trainandsearch) { for (int i = 0; i < search_count; ++i) { auto result = search_idx->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } }; diff --git a/internal/core/src/index/unittest/test_hnsw.cpp b/internal/core/src/index/unittest/test_hnsw.cpp index 4fb14f8dbb..3d98e3b8e9 100644 --- a/internal/core/src/index/unittest/test_hnsw.cpp +++ b/internal/core/src/index/unittest/test_hnsw.cpp @@ -79,7 +79,6 @@ TEST_P(HNSWTest, HNSW_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); // case: k > nb const int64_t new_rows = 6; @@ -93,7 +92,6 @@ TEST_P(HNSWTest, HNSW_basic) { ASSERT_EQ(res_ids[i * k + j], -1); } } - ReleaseQueryResult(result2); } TEST_P(HNSWTest, HNSW_delete) { @@ -124,11 +122,9 @@ TEST_P(HNSWTest, HNSW_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); /* * delete result checked by eyes @@ -183,7 +179,6 @@ TEST_P(HNSWTest, HNSW_serialize) { EXPECT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } }*/ diff --git a/internal/core/src/index/unittest/test_idmap.cpp b/internal/core/src/index/unittest/test_idmap.cpp index 6f5a7bbf47..0e0390b95b 100644 --- a/internal/core/src/index/unittest/test_idmap.cpp +++ b/internal/core/src/index/unittest/test_idmap.cpp @@ -87,7 +87,6 @@ TEST_P(IDMAPTest, idmap_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); if (index_mode_ == milvus::knowhere::IndexMode::MODE_GPU) { #ifdef MILVUS_GPU_VERSION @@ -102,7 +101,6 @@ TEST_P(IDMAPTest, idmap_basic) { auto result2 = new_index->Query(query_dataset, conf, nullptr); AssertAnns(result2, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(result2); #if 0 auto result3 = new_index->QueryById(id_dataset, conf); @@ -119,7 +117,6 @@ TEST_P(IDMAPTest, idmap_basic) { auto result_bs_1 = index_->Query(query_dataset, conf, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result_bs_1); #if 0 auto result_bs_2 = index_->QueryById(id_dataset, conf); @@ -158,7 +155,6 @@ TEST_P(IDMAPTest, idmap_serialize) { auto re_result = index_->Query(query_dataset, conf, nullptr); AssertAnns(re_result, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(re_result); EXPECT_EQ(index_->Count(), nb); EXPECT_EQ(index_->Dim(), dim); auto binaryset = index_->Serialize(conf); @@ -178,7 +174,6 @@ TEST_P(IDMAPTest, idmap_serialize) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } @@ -203,7 +198,6 @@ TEST_P(IDMAPTest, idmap_slice) { auto re_result = index_->Query(query_dataset, conf, nullptr); AssertAnns(re_result, nq, k); // PrintResult(re_result, nq, k); - ReleaseQueryResult(re_result); EXPECT_EQ(index_->Count(), nb); EXPECT_EQ(index_->Dim(), dim); auto binaryset = index_->Serialize(conf); @@ -214,7 +208,6 @@ TEST_P(IDMAPTest, idmap_slice) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); } } @@ -472,7 +465,6 @@ TEST_P(IDMAPTest, idmap_copy) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); { // clone @@ -487,7 +479,6 @@ TEST_P(IDMAPTest, idmap_copy) { auto clone_index = milvus::knowhere::cloner::CopyCpuToGpu(index_, DEVICEID, conf); auto clone_result = clone_index->Query(query_dataset, conf, nullptr); AssertAnns(clone_result, nq, k); - ReleaseQueryResult(clone_result); ASSERT_THROW({ std::static_pointer_cast(clone_index)->GetRawVectors(); }, milvus::knowhere::KnowhereException); @@ -500,7 +491,6 @@ TEST_P(IDMAPTest, idmap_copy) { clone_index->Load(binary); auto new_result = clone_index->Query(query_dataset, conf, nullptr); AssertAnns(new_result, nq, k); - ReleaseQueryResult(new_result); // auto clone_gpu_idx = clone_index->Clone(); // auto clone_gpu_res = clone_gpu_idx->Search(query_dataset, conf); @@ -510,7 +500,6 @@ TEST_P(IDMAPTest, idmap_copy) { auto host_index = milvus::knowhere::cloner::CopyGpuToCpu(clone_index, conf); auto host_result = host_index->Query(query_dataset, conf, nullptr); AssertAnns(host_result, nq, k); - ReleaseQueryResult(host_result); ASSERT_TRUE(std::static_pointer_cast(host_index)->GetRawVectors() != nullptr); // gpu to gpu @@ -519,7 +508,6 @@ TEST_P(IDMAPTest, idmap_copy) { std::static_pointer_cast(device_index)->CopyGpuToGpu(DEVICEID, conf); auto device_result = new_device_index->Query(query_dataset, conf, nullptr); AssertAnns(device_result, nq, k); - ReleaseQueryResult(device_result); } } #endif diff --git a/internal/core/src/index/unittest/test_ivf.cpp b/internal/core/src/index/unittest/test_ivf.cpp index af50983ae3..123fd817cb 100644 --- a/internal/core/src/index/unittest/test_ivf.cpp +++ b/internal/core/src/index/unittest/test_ivf.cpp @@ -107,7 +107,6 @@ TEST_P(IVFTest, ivf_basic_cpu) { auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); if (index_type_ != milvus::knowhere::IndexEnum::INDEX_FAISS_IVFPQ) { #if 0 @@ -132,7 +131,6 @@ TEST_P(IVFTest, ivf_basic_cpu) { auto result_bs_1 = index_->Query(query_dataset, conf_, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); // PrintResult(result, nq, k); - ReleaseQueryResult(result_bs_1); #if 0 auto result_bs_2 = index_->QueryById(id_dataset, conf_); @@ -166,7 +164,6 @@ TEST_P(IVFTest, ivf_basic_gpu) { auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, k); // PrintResult(result, nq, k); - ReleaseQueryResult(result); faiss::ConcurrentBitsetPtr concurrent_bitset_ptr = std::make_shared(nb); for (int64_t i = 0; i < nq; ++i) { @@ -176,7 +173,6 @@ TEST_P(IVFTest, ivf_basic_gpu) { auto result_bs_1 = index_->Query(query_dataset, conf_, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); // PrintResult(result, nq, k); - ReleaseQueryResult(result_bs_1); #ifdef MILVUS_GPU_VERSION milvus::knowhere::FaissGpuResourceMgr::GetInstance().Dump(); @@ -213,7 +209,6 @@ TEST_P(IVFTest, ivf_serialize) { EXPECT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, conf_[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -230,7 +225,6 @@ TEST_P(IVFTest, ivf_slice) { EXPECT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, conf_[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -269,7 +263,6 @@ TEST_P(IVFTest, clone_test) { auto clone_index = milvus::knowhere::cloner::CopyGpuToCpu(index_, milvus::knowhere::Config()); auto clone_result = clone_index->Query(query_dataset, conf_, nullptr); AssertEqual(result, clone_result); - ReleaseQueryResult(clone_result); std::cout << "clone G <=> C [" << index_type_ << "] success" << std::endl; }); } else { @@ -289,14 +282,11 @@ TEST_P(IVFTest, clone_test) { auto clone_index = milvus::knowhere::cloner::CopyCpuToGpu(index_, DEVICEID, milvus::knowhere::Config()); auto clone_result = clone_index->Query(query_dataset, conf_, nullptr); AssertEqual(result, clone_result); - ReleaseQueryResult(clone_result); std::cout << "clone C <=> G [" << index_type_ << "] success" << std::endl; }); EXPECT_ANY_THROW(milvus::knowhere::cloner::CopyCpuToGpu(index_, -1, milvus::knowhere::Config())); } } - - ReleaseQueryResult(result); } #endif @@ -320,7 +310,6 @@ TEST_P(IVFTest, gpu_seal_test) { auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, conf_[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); fiu_init(0); fiu_enable("IVF.Search.throw_std_exception", 1, nullptr, 0); diff --git a/internal/core/src/index/unittest/test_ivf_cpu_nm.cpp b/internal/core/src/index/unittest/test_ivf_cpu_nm.cpp index 5e7cb36d14..708bc88371 100644 --- a/internal/core/src/index/unittest/test_ivf_cpu_nm.cpp +++ b/internal/core/src/index/unittest/test_ivf_cpu_nm.cpp @@ -110,7 +110,6 @@ TEST_P(IVFNMCPUTest, ivf_basic_cpu) { auto clone_index = milvus::knowhere::cloner::CopyCpuToGpu(index_, DEVICEID, conf_); auto clone_result = clone_index->Query(query_dataset, conf_, nullptr); AssertAnns(clone_result, nq, k); - ReleaseQueryResult(clone_result); std::cout << "clone C <=> G [" << index_type_ << "] success" << std::endl; }); EXPECT_ANY_THROW(milvus::knowhere::cloner::CopyCpuToGpu(index_, -1, milvus::knowhere::Config())); @@ -124,13 +123,11 @@ TEST_P(IVFNMCPUTest, ivf_basic_cpu) { auto result_bs_1 = index_->Query(query_dataset, conf_, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result_bs_1); #ifdef MILVUS_GPU_VERSION milvus::knowhere::FaissGpuResourceMgr::GetInstance().Dump(); #endif - ReleaseQueryResult(result); } TEST_P(IVFNMCPUTest, ivf_slice) { @@ -163,5 +160,4 @@ TEST_P(IVFNMCPUTest, ivf_slice) { auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } diff --git a/internal/core/src/index/unittest/test_ivf_gpu_nm.cpp b/internal/core/src/index/unittest/test_ivf_gpu_nm.cpp index 77b5ae975d..a290e92c7f 100644 --- a/internal/core/src/index/unittest/test_ivf_gpu_nm.cpp +++ b/internal/core/src/index/unittest/test_ivf_gpu_nm.cpp @@ -119,7 +119,6 @@ TEST_F(IVFNMGPUTest, ivf_basic_gpu) { SERIALIZE_AND_LOAD(clone_index); auto clone_result = clone_index->Query(query_dataset, conf_, nullptr); AssertEqual(result, clone_result); - ReleaseQueryResult(clone_result); std::cout << "clone G <=> C [" << index_type_ << "] success" << std::endl; }); } @@ -131,10 +130,7 @@ TEST_F(IVFNMGPUTest, ivf_basic_gpu) { auto result_bs_1 = index_->Query(query_dataset, conf_, concurrent_bitset_ptr); AssertAnns(result_bs_1, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result_bs_1); milvus::knowhere::FaissGpuResourceMgr::GetInstance().Dump(); - - ReleaseQueryResult(result); } #endif diff --git a/internal/core/src/index/unittest/test_ivf_hnsw.cpp b/internal/core/src/index/unittest/test_ivf_hnsw.cpp index 4f7656cfeb..7fbc1e743a 100644 --- a/internal/core/src/index/unittest/test_ivf_hnsw.cpp +++ b/internal/core/src/index/unittest/test_ivf_hnsw.cpp @@ -77,7 +77,6 @@ TEST_P(IVFHNSWTest, ivfhnsw_basic_cpu) { auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } TEST_P(IVFHNSWTest, ivfhnsw_slice) { @@ -93,6 +92,5 @@ TEST_P(IVFHNSWTest, ivfhnsw_slice) { EXPECT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf_, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_ngtonng.cpp b/internal/core/src/index/unittest/test_ngtonng.cpp index ba4113748b..63c82db67d 100644 --- a/internal/core/src/index/unittest/test_ngtonng.cpp +++ b/internal/core/src/index/unittest/test_ngtonng.cpp @@ -70,7 +70,6 @@ TEST_P(NGTONNGTest, ngtonng_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } TEST_P(NGTONNGTest, ngtonng_delete) { @@ -87,11 +86,9 @@ TEST_P(NGTONNGTest, ngtonng_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); } TEST_P(NGTONNGTest, ngtonng_serialize) { @@ -149,7 +146,6 @@ TEST_P(NGTONNGTest, ngtonng_serialize) { ASSERT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -164,6 +160,5 @@ TEST_P(NGTONNGTest, ngtonng_slice) { ASSERT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_ngtpanng.cpp b/internal/core/src/index/unittest/test_ngtpanng.cpp index 5802e987c2..38a2cf8029 100644 --- a/internal/core/src/index/unittest/test_ngtpanng.cpp +++ b/internal/core/src/index/unittest/test_ngtpanng.cpp @@ -70,7 +70,6 @@ TEST_P(NGTPANNGTest, ngtpanng_basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); } TEST_P(NGTPANNGTest, ngtpanng_delete) { @@ -87,11 +86,9 @@ TEST_P(NGTPANNGTest, ngtpanng_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); } TEST_P(NGTPANNGTest, ngtpanng_serialize) { @@ -149,7 +146,6 @@ TEST_P(NGTPANNGTest, ngtpanng_serialize) { ASSERT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -164,6 +160,5 @@ TEST_P(NGTPANNGTest, ngtpanng_slice) { ASSERT_EQ(index_->Dim(), dim); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_nsg.cpp b/internal/core/src/index/unittest/test_nsg.cpp index 18df9d7362..29283680c2 100644 --- a/internal/core/src/index/unittest/test_nsg.cpp +++ b/internal/core/src/index/unittest/test_nsg.cpp @@ -103,7 +103,6 @@ TEST_F(NSGInterfaceTest, basic_test) { auto result_1 = index_->Query(query_dataset, search_conf, nullptr); AssertAnns(result_1, nq, k); - ReleaseQueryResult(result_1); /* test NSG GPU train */ auto new_index = std::make_shared(DEVICE_GPU0); @@ -125,7 +124,6 @@ TEST_F(NSGInterfaceTest, basic_test) { auto result_2 = new_index->Query(query_dataset, search_conf, nullptr); AssertAnns(result_2, nq, k); - ReleaseQueryResult(result_2); ASSERT_EQ(index_->Count(), nb); ASSERT_EQ(index_->Dim(), dim); @@ -199,9 +197,6 @@ TEST_F(NSGInterfaceTest, delete_test) { for (int i = 0; i < nq; i++) { ASSERT_NE(I_before[i * k], I_after[i * k]); } - - ReleaseQueryResult(result); - ReleaseQueryResult(result_after); } TEST_F(NSGInterfaceTest, slice_test) { @@ -232,7 +227,6 @@ TEST_F(NSGInterfaceTest, slice_test) { auto result = index_->Query(query_dataset, search_conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); /* test NSG GPU train */ auto new_index_1 = std::make_shared(DEVICE_GPU0); @@ -254,7 +248,6 @@ TEST_F(NSGInterfaceTest, slice_test) { auto new_result_1 = new_index_1->Query(query_dataset, search_conf, nullptr); AssertAnns(new_result_1, nq, k); - ReleaseQueryResult(new_result_1); ASSERT_EQ(index_->Count(), nb); ASSERT_EQ(index_->Dim(), dim); diff --git a/internal/core/src/index/unittest/test_rhnsw_flat.cpp b/internal/core/src/index/unittest/test_rhnsw_flat.cpp index 8d6162d8bf..610b16bcf2 100644 --- a/internal/core/src/index/unittest/test_rhnsw_flat.cpp +++ b/internal/core/src/index/unittest/test_rhnsw_flat.cpp @@ -58,7 +58,6 @@ TEST_P(RHNSWFlatTest, HNSW_basic) { auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); // Serialize and Load before Query milvus::knowhere::BinarySet bs = index_->Serialize(conf); @@ -76,7 +75,6 @@ TEST_P(RHNSWFlatTest, HNSW_basic) { auto result2 = tmp_index->Query(query_dataset, conf, nullptr); // AssertAnns(result2, nq, k); - ReleaseQueryResult(result2); } TEST_P(RHNSWFlatTest, HNSW_delete) { @@ -94,11 +92,9 @@ TEST_P(RHNSWFlatTest, HNSW_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); // AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); /* * delete result checked by eyes @@ -175,7 +171,6 @@ TEST_P(RHNSWFlatTest, HNSW_serialize) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -197,6 +192,5 @@ TEST_P(RHNSWFlatTest, HNSW_slice) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_rhnsw_pq.cpp b/internal/core/src/index/unittest/test_rhnsw_pq.cpp index 3e647a30aa..5da831bdcf 100644 --- a/internal/core/src/index/unittest/test_rhnsw_pq.cpp +++ b/internal/core/src/index/unittest/test_rhnsw_pq.cpp @@ -59,7 +59,6 @@ TEST_P(RHNSWPQTest, HNSW_basic) { milvus::knowhere::BinarySet bs = index_->Serialize(conf); auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto tmp_index = std::make_shared(); @@ -67,7 +66,6 @@ TEST_P(RHNSWPQTest, HNSW_basic) { auto result2 = tmp_index->Query(query_dataset, conf, nullptr); // AssertAnns(result2, nq, k); - ReleaseQueryResult(result2); } TEST_P(RHNSWPQTest, HNSW_delete) { @@ -85,11 +83,9 @@ TEST_P(RHNSWPQTest, HNSW_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); // AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); /* * delete result checked by eyes @@ -150,7 +146,6 @@ TEST_P(RHNSWPQTest, HNSW_serialize) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -165,6 +160,5 @@ TEST_P(RHNSWPQTest, HNSW_slice) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_rhnsw_sq8.cpp b/internal/core/src/index/unittest/test_rhnsw_sq8.cpp index 547524e02a..57d5d96a50 100644 --- a/internal/core/src/index/unittest/test_rhnsw_sq8.cpp +++ b/internal/core/src/index/unittest/test_rhnsw_sq8.cpp @@ -61,7 +61,6 @@ TEST_P(RHNSWSQ8Test, HNSW_basic) { milvus::knowhere::BinarySet bs = index_->Serialize(conf); auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto tmp_index = std::make_shared(); @@ -69,7 +68,6 @@ TEST_P(RHNSWSQ8Test, HNSW_basic) { auto result2 = tmp_index->Query(query_dataset, conf, nullptr); // AssertAnns(result2, nq, k); - ReleaseQueryResult(result2); } TEST_P(RHNSWSQ8Test, HNSW_delete) { @@ -87,11 +85,9 @@ TEST_P(RHNSWSQ8Test, HNSW_delete) { auto result1 = index_->Query(query_dataset, conf, nullptr); // AssertAnns(result1, nq, k); - ReleaseQueryResult(result1); auto result2 = index_->Query(query_dataset, conf, bitset); // AssertAnns(result2, nq, k, CheckMode::CHECK_NOT_EQUAL); - ReleaseQueryResult(result2); /* * delete result checked by eyes @@ -152,7 +148,6 @@ TEST_P(RHNSWSQ8Test, HNSW_serialize) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } @@ -167,6 +162,5 @@ TEST_P(RHNSWSQ8Test, HNSW_slice) { EXPECT_EQ(new_idx->Dim(), dim); auto result = new_idx->Query(query_dataset, conf, nullptr); // AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_sptag.cpp b/internal/core/src/index/unittest/test_sptag.cpp index 4ca0e21878..2918daf0af 100644 --- a/internal/core/src/index/unittest/test_sptag.cpp +++ b/internal/core/src/index/unittest/test_sptag.cpp @@ -69,7 +69,6 @@ TEST_P(SPTAGTest, sptag_basic) { // index_->Add(base_dataset, conf); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); - ReleaseQueryResult(result); { auto ids = result->Get(milvus::knowhere::meta::IDS); @@ -103,7 +102,6 @@ TEST_P(SPTAGTest, sptag_serialize) { auto result = new_index->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); PrintResult(result, nq, k); - ReleaseQueryResult(result); ASSERT_EQ(new_index->Count(), nb); ASSERT_EQ(new_index->Dim(), dim); // ASSERT_THROW({ new_index->Clone(); }, milvus::knowhere::KnowhereException); @@ -188,6 +186,5 @@ TEST_P(SPTAGTest, sptag_slice) { auto result = new_index->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, k); PrintResult(result, nq, k); - ReleaseQueryResult(result); } } diff --git a/internal/core/src/index/unittest/test_vecindex.cpp b/internal/core/src/index/unittest/test_vecindex.cpp index 2d3aff7f6a..bfbd41ef16 100644 --- a/internal/core/src/index/unittest/test_vecindex.cpp +++ b/internal/core/src/index/unittest/test_vecindex.cpp @@ -86,7 +86,6 @@ TEST_P(VecIndexTest, basic) { auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); PrintResult(result, nq, k); - ReleaseQueryResult(result); } TEST_P(VecIndexTest, serialize) { @@ -97,7 +96,6 @@ TEST_P(VecIndexTest, serialize) { EXPECT_EQ(index_->index_mode(), index_mode_); auto result = index_->Query(query_dataset, conf, nullptr); AssertAnns(result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(result); auto binaryset = index_->Serialize(); auto new_index = milvus::knowhere::VecIndexFactory::GetInstance().CreateVecIndex(index_type_, index_mode_); @@ -108,7 +106,6 @@ TEST_P(VecIndexTest, serialize) { EXPECT_EQ(index_->index_mode(), new_index->index_mode()); auto new_result = new_index_->Query(query_dataset, conf, nullptr); AssertAnns(new_result, nq, conf[milvus::knowhere::meta::TOPK]); - ReleaseQueryResult(new_result); } // todo diff --git a/internal/core/src/query/SearchOnSealed.cpp b/internal/core/src/query/SearchOnSealed.cpp index 146bf1837f..65fbd22cba 100644 --- a/internal/core/src/query/SearchOnSealed.cpp +++ b/internal/core/src/query/SearchOnSealed.cpp @@ -58,17 +58,6 @@ AssembleNegBitset(const BitsetSimple& bitset_simple) { return result; } -// TODO: temporary fix -// remove this when internal destructor bug is fix -static void -ReleaseQueryResult(const knowhere::DatasetPtr& result) { - float* res_dist = result->Get(knowhere::meta::DISTANCE); - free(res_dist); - - int64_t* res_ids = result->Get(knowhere::meta::IDS); - free(res_ids); -} - void SearchOnSealed(const Schema& schema, const segcore::SealedIndexingRecord& record, @@ -111,9 +100,5 @@ SearchOnSealed(const Schema& schema, std::copy_n(ids, total_num, result.internal_seg_offsets_.data()); std::copy_n(distances, total_num, result.result_distances_.data()); - - // TODO: temporary fix - // remove this when internal destructor bug is fix - ReleaseQueryResult(final); } } // namespace milvus::query