diff --git a/src/storage/knn_index/knn_ivf/ivf_index_data_in_mem.cpp b/src/storage/knn_index/knn_ivf/ivf_index_data_in_mem.cpp index 7328a637c1..e8d043a4c4 100644 --- a/src/storage/knn_index/knn_ivf/ivf_index_data_in_mem.cpp +++ b/src/storage/knn_index/knn_ivf/ivf_index_data_in_mem.cpp @@ -111,6 +111,7 @@ class IVFIndexInMemT final : public IVFIndexInMem { } ~IVFIndexInMemT() { + std::unique_lock lock(rw_mutex_); if (own_ivf_index_storage_) { DecreaseMemoryUsageBase(MemoryUsed()); } @@ -237,6 +238,7 @@ class IVFIndexInMemT final : public IVFIndexInMem { BufferHandle handle = new_chunk_index_entry->GetIndex(); auto *data_ptr = static_cast(handle.GetDataMut()); data_ptr->GetMemData(std::move(*ivf_index_storage_)); + delete ivf_index_storage_; ivf_index_storage_ = data_ptr->GetIVFIndexStoragePtr(); own_ivf_index_storage_ = false; dump_handle_ = std::move(handle);