mirror of
https://github.com/milvus-io/milvus.git
synced 2026-07-21 10:15:43 +00:00
fix: fix build interim index failures (#42679)
issue: #42028 W20250522 09:52:55.785657 12779 ChunkedSegmentSealedImpl.cpp:1752] [SERVER][generate_interim_index][CGO_LOAD][]fail to generate binlog index, because bad optional access After the cachelayer is added, num_rows_ can not be obtained before interim index generated , and an external parameter pass is required Signed-off-by: foxspy <xianliang.li@zilliz.com>
This commit is contained in:
@@ -1679,7 +1679,8 @@ ChunkedSegmentSealedImpl::mask_with_timestamps(BitsetTypeView& bitset_chunk,
|
||||
}
|
||||
|
||||
bool
|
||||
ChunkedSegmentSealedImpl::generate_interim_index(const FieldId field_id) {
|
||||
ChunkedSegmentSealedImpl::generate_interim_index(const FieldId field_id,
|
||||
int64_t num_rows) {
|
||||
if (col_index_meta_ == nullptr || !col_index_meta_->HasFiled(field_id)) {
|
||||
return false;
|
||||
}
|
||||
@@ -1723,12 +1724,7 @@ ChunkedSegmentSealedImpl::generate_interim_index(const FieldId field_id) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
// get binlog data and meta
|
||||
int64_t row_count;
|
||||
{
|
||||
std::shared_lock lck(mutex_);
|
||||
row_count = num_rows_.value();
|
||||
}
|
||||
int64_t row_count = num_rows;
|
||||
|
||||
// generate index params
|
||||
auto field_binlog_config = std::unique_ptr<VecIndexConfig>(
|
||||
@@ -1861,7 +1857,7 @@ ChunkedSegmentSealedImpl::load_field_data_common(
|
||||
insert_record_.seal_pks();
|
||||
}
|
||||
|
||||
bool generated_interim_index = generate_interim_index(field_id);
|
||||
bool generated_interim_index = generate_interim_index(field_id, num_rows);
|
||||
|
||||
std::unique_lock lck(mutex_);
|
||||
set_bit(field_data_ready_bitset_, field_id, true);
|
||||
|
||||
@@ -374,7 +374,7 @@ class ChunkedSegmentSealedImpl : public SegmentSealed {
|
||||
LoadScalarIndex(const LoadIndexInfo& info);
|
||||
|
||||
bool
|
||||
generate_interim_index(const FieldId field_id);
|
||||
generate_interim_index(const FieldId field_id, int64_t num_rows);
|
||||
|
||||
void
|
||||
fill_empty_field(const FieldMeta& field_meta);
|
||||
|
||||
Reference in New Issue
Block a user