mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
Fix inserting into growing segment copies data (#22792)
Signed-off-by: yah01 <yang.cen@zilliz.com>
This commit is contained in:
parent
8139106b51
commit
ab1ac69712
@ -67,7 +67,7 @@ SegmentGrowingImpl::Insert(int64_t reserved_offset,
|
||||
// step 1: check insert data if valid
|
||||
std::unordered_map<FieldId, int64_t> field_id_to_offset;
|
||||
int64_t field_offset = 0;
|
||||
for (auto field : insert_data->fields_data()) {
|
||||
for (const auto& field : insert_data->fields_data()) {
|
||||
auto field_id = FieldId(field.field_id());
|
||||
AssertInfo(!field_id_to_offset.count(field_id), "duplicate field data");
|
||||
field_id_to_offset.emplace(field_id, field_offset++);
|
||||
@ -445,7 +445,7 @@ SegmentGrowingImpl::get_active_count(Timestamp ts) const {
|
||||
auto row_count = this->get_row_count();
|
||||
auto& ts_vec = this->get_insert_record().timestamps_;
|
||||
auto iter = std::upper_bound(
|
||||
boost::make_counting_iterator((int64_t)0),
|
||||
boost::make_counting_iterator(static_cast<int64_t>(0)),
|
||||
boost::make_counting_iterator(row_count),
|
||||
ts,
|
||||
[&](Timestamp ts, int64_t index) { return ts < ts_vec[index]; });
|
||||
|
||||
@ -18,7 +18,12 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "common/FieldMeta.h"
|
||||
#include "common/LoadInfo.h"
|
||||
#include "common/Span.h"
|
||||
#include "common/Utils.h"
|
||||
#include "exceptions/EasyAssert.h"
|
||||
#include "fmt/core.h"
|
||||
|
||||
namespace milvus::segcore {
|
||||
|
||||
@ -44,11 +49,11 @@ class VariableField {
|
||||
begin++;
|
||||
}
|
||||
|
||||
data_ = (char*)CreateMap(segment_id, field_meta, info);
|
||||
data_ = static_cast<char*>(CreateMap(segment_id, field_meta, info));
|
||||
construct_views();
|
||||
}
|
||||
|
||||
VariableField(VariableField&& field)
|
||||
VariableField(VariableField&& field) noexcept
|
||||
: indices_(std::move(field.indices_)),
|
||||
size_(field.size_),
|
||||
data_(field.data_),
|
||||
@ -60,8 +65,8 @@ class VariableField {
|
||||
if (data_ != MAP_FAILED && data_ != nullptr) {
|
||||
if (munmap(data_, size_)) {
|
||||
AssertInfo(true,
|
||||
std::string("failed to unmap variable field err=") +
|
||||
strerror(errno));
|
||||
fmt::format("failed to unmap variable field, err={}",
|
||||
strerror(errno)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -71,12 +76,12 @@ class VariableField {
|
||||
return data_;
|
||||
}
|
||||
|
||||
const std::vector<std::string_view>&
|
||||
[[nodiscard]] const std::vector<std::string_view>&
|
||||
views() const {
|
||||
return views_;
|
||||
}
|
||||
|
||||
size_t
|
||||
[[nodiscard]] size_t
|
||||
size() const {
|
||||
return size_;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user