mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-02 17:05:33 +08:00
fix: Write padding at end of mmap file not chunk (#34529)
Related to #34508 The padding bytes shall be written only at the end of the mmap file not the chunk of each field data file. Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
This commit is contained in:
parent
9b37d3f517
commit
4850336ca3
@ -66,6 +66,21 @@ PaddingSize(const DataType& type) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline void
|
||||
WriteFieldPadding(File& file, DataType data_type, uint64_t& total_written) {
|
||||
// write padding 0 in file content directly
|
||||
// see also https://github.com/milvus-io/milvus/issues/34442
|
||||
auto padding_size = PaddingSize(data_type);
|
||||
if (padding_size > 0) {
|
||||
std::vector<char> padding(padding_size, 0);
|
||||
ssize_t written = file.Write(padding.data(), padding_size);
|
||||
if (written < padding_size) {
|
||||
THROW_FILE_WRITE_ERROR
|
||||
}
|
||||
total_written += written;
|
||||
}
|
||||
}
|
||||
|
||||
inline void
|
||||
WriteFieldData(File& file,
|
||||
DataType data_type,
|
||||
@ -155,17 +170,5 @@ WriteFieldData(File& file,
|
||||
total_written += data->Size(i);
|
||||
}
|
||||
}
|
||||
|
||||
// write padding 0 in file content directly
|
||||
// see also https://github.com/milvus-io/milvus/issues/34442
|
||||
auto padding_size = PaddingSize(data_type);
|
||||
if (padding_size > 0 ) {
|
||||
std::vector<char> padding(padding_size, 0);
|
||||
ssize_t written = file.Write(padding.data(), padding_size);
|
||||
if (written < padding_size) {
|
||||
THROW_FILE_WRITE_ERROR
|
||||
}
|
||||
total_written += written;
|
||||
}
|
||||
}
|
||||
} // namespace milvus
|
||||
|
||||
@ -541,6 +541,7 @@ SegmentSealedImpl::MapFieldData(const FieldId field_id, FieldDataInfo& data) {
|
||||
indices,
|
||||
element_indices);
|
||||
}
|
||||
WriteFieldPadding(file, data_type, total_written);
|
||||
|
||||
auto num_rows = data.row_count;
|
||||
std::shared_ptr<ColumnBase> column{};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user