fix: set mmap_file_raii_ to nullptr when mmap is disabled (#44516)

issue: #44510
related: #44501

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
This commit is contained in:
sparknack 2025-09-24 11:50:03 +08:00 committed by GitHub
parent bc170201dd
commit 14c085374e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 27 additions and 9 deletions

View File

@ -90,7 +90,9 @@ StringChunkWriter::finish() {
char padding[MMAP_STRING_PADDING];
target_->write(padding, MMAP_STRING_PADDING);
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<StringChunk>(
row_nums_, data, size, nullable_, std::move(mmap_file_raii));
}
@ -153,7 +155,9 @@ JSONChunkWriter::finish() {
target_->write(padding, simdjson::SIMDJSON_PADDING);
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<JSONChunk>(
row_nums_, data, size, nullable_, std::move(mmap_file_raii));
}
@ -241,7 +245,9 @@ ArrayChunkWriter::finish() {
char padding[MMAP_ARRAY_PADDING];
target_->write(padding, MMAP_ARRAY_PADDING);
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<ArrayChunk>(row_nums_,
data,
size,
@ -387,7 +393,9 @@ VectorArrayChunkWriter::finish() {
target_->write(padding, MMAP_ARRAY_PADDING);
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<VectorArrayChunk>(
dim_, row_nums_, data, size, element_type_, std::move(mmap_file_raii));
}
@ -449,7 +457,9 @@ SparseFloatVectorChunkWriter::write(const arrow::ArrayVector& array_vec) {
std::unique_ptr<Chunk>
SparseFloatVectorChunkWriter::finish() {
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<SparseFloatVectorChunk>(
row_nums_, data, size, nullable_, std::move(mmap_file_raii));
}

View File

@ -146,7 +146,9 @@ class ChunkWriter final : public ChunkWriterBase {
std::unique_ptr<Chunk>
finish() override {
auto [data, size] = target_->get();
auto mmap_file_raii = std::make_unique<MmapFileRAII>(file_path_);
auto mmap_file_raii = file_path_.empty()
? nullptr
: std::make_unique<MmapFileRAII>(file_path_);
return std::make_unique<FixedWidthChunk>(row_nums_,
dim_,
data,

View File

@ -305,7 +305,7 @@ IndexFactory::ScalarIndexLoadResource(
request.final_memory_cost = index_size_in_bytes;
request.final_disk_cost = 0;
request.max_memory_cost = 2 * index_size_in_bytes;
request.max_disk_cost = 0;
request.max_disk_cost = index_size_in_bytes;
}
request.has_raw_data = true;
} else if (index_type == milvus::index::INVERTED_INDEX_TYPE ||

View File

@ -186,6 +186,7 @@ StringIndexMarisa::LoadWithoutAssemble(const BinarySet& set,
const Config& config) {
auto uuid = boost::uuids::random_generator()();
auto uuid_string = boost::uuids::to_string(uuid);
// TODO: change the mmap path of marisa index
auto file_name = std::string("/tmp/") + uuid_string;
auto index = set.GetByName(MARISA_TRIE_INDEX);
@ -204,11 +205,16 @@ StringIndexMarisa::LoadWithoutAssemble(const BinarySet& set,
if (config.contains(MMAP_FILE_PATH)) {
trie_.mmap(file_name.c_str());
mmap_file_raii_ = std::make_unique<MmapFileRAII>(file_name);
} else {
auto file = File::Open(file_name, O_RDONLY);
trie_.read(file.Descriptor());
mmap_file_raii_ = nullptr;
}
if (!config.contains(MMAP_FILE_PATH)) {
unlink(file_name.c_str());
}
mmap_file_raii_ = std::make_unique<MmapFileRAII>(file_name);
auto str_ids = set.GetByName(MARISA_STR_IDS);
auto str_ids_len = str_ids->size;

View File

@ -208,7 +208,7 @@ INSTANTIATE_TEST_SUITE_P(
{"mmap", "false"},
{"field_type", "string"}},
{2UL * 1024 * 1024 * 1024,
0UL,
1UL * 1024 * 1024 * 1024,
1UL * 1024 * 1024 * 1024,
0UL,
true}),