From 3393090dc10cfaa252436130b27469f24f301dc5 Mon Sep 17 00:00:00 2001 From: wxyu Date: Sat, 12 Oct 2019 14:33:57 +0800 Subject: [PATCH] MS-640 Cache object size calculate incorrect Former-commit-id: 63dfa23d1aef9cec5597a2aeecb2a0c73800882d --- cpp/CHANGELOG.md | 1 + cpp/src/wrapper/VecIndex.cpp | 13 +++++++++++-- cpp/src/wrapper/VecIndex.h | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 1a62a791b0..18114c9a5f 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -13,6 +13,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-601 - Docker logs error caused by get CPUTemperature error - MS-622 - Delete vectors should be failed if date range is invalid - MS-620 - Get table row counts display wrong error code +- MS-640 - Cache object size calculate incorrect ## Improvement - MS-552 - Add and change the easylogging library diff --git a/cpp/src/wrapper/VecIndex.cpp b/cpp/src/wrapper/VecIndex.cpp index fe75cbb81b..e50c97f49e 100644 --- a/cpp/src/wrapper/VecIndex.cpp +++ b/cpp/src/wrapper/VecIndex.cpp @@ -37,9 +37,17 @@ namespace engine { int64_t VecIndex::Size() { + if (size_ != 0) { + return size_; + } return Count() * Dimension() * sizeof(float); } +void +VecIndex::set_size(int64_t size) { + size_ = size; +} + struct FileIOReader { std::fstream fs; std::string name; @@ -157,9 +165,10 @@ GetVecIndexFactory(const IndexType& type, const Config& cfg) { } VecIndexPtr -LoadVecIndex(const IndexType& index_type, const knowhere::BinarySet& index_binary) { +LoadVecIndex(const IndexType& index_type, const knowhere::BinarySet& index_binary, int64_t size) { auto index = GetVecIndexFactory(index_type); index->Load(index_binary); + index->set_size(size); return index; } @@ -205,7 +214,7 @@ read_index(const std::string& location) { delete[] meta; } - return LoadVecIndex(current_type, load_data_list); + return LoadVecIndex(current_type, load_data_list, length); } Status diff --git a/cpp/src/wrapper/VecIndex.h b/cpp/src/wrapper/VecIndex.h index 34d3d2f761..f5fdd49466 100644 --- a/cpp/src/wrapper/VecIndex.h +++ b/cpp/src/wrapper/VecIndex.h @@ -87,6 +87,9 @@ class VecIndex : public cache::DataObj { int64_t Size() override; + void + set_size(int64_t size); + virtual knowhere::BinarySet Serialize() = 0; @@ -115,6 +118,8 @@ class VecIndex : public cache::DataObj { return Status::OK(); } //////////////// + private: + int64_t size_ = 0; }; extern Status @@ -127,7 +132,7 @@ extern VecIndexPtr GetVecIndexFactory(const IndexType& type, const Config& cfg = Config()); extern VecIndexPtr -LoadVecIndex(const IndexType& index_type, const knowhere::BinarySet& index_binary); +LoadVecIndex(const IndexType& index_type, const knowhere::BinarySet& index_binary, int64_t size); extern IndexType ConvertToCpuIndexType(const IndexType& type);