Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions be/src/olap/olap_snapshot_converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -331,15 +331,19 @@ OLAPStatus OlapSnapshotConverter::to_new_snapshot(const OLAPHeaderMessage& olap_
RETURN_NOT_OK(rowset.convert_from_old_files(old_data_path_prefix, &success_files));
}

// convert pending delta file to rowsets
for (auto& pending_rowset : *pending_rowsets) {
for (auto it = pending_rowsets->begin(); it != pending_rowsets->end(); ++it) {
RowsetMetaSharedPtr alpha_rowset_meta(new AlphaRowsetMeta());
alpha_rowset_meta->init_from_pb(pending_rowset);
alpha_rowset_meta->init_from_pb(*it);
AlphaRowset rowset(&tablet_schema, new_data_path_prefix, &data_dir, alpha_rowset_meta);
RETURN_NOT_OK(rowset.init());
std::vector<std::string> success_files;
std::string pending_delta_path = old_data_path_prefix + PENDING_DELTA_PREFIX;
RETURN_NOT_OK(rowset.convert_from_old_files(pending_delta_path, &success_files));
// std::string pending_delta_path = old_data_path_prefix + PENDING_DELTA_PREFIX;
RETURN_NOT_OK(rowset.convert_from_old_files(old_data_path_prefix, &success_files));
// pending delta does not have row num, index size, data size info
// should load the pending delta, get these info and reset rowset meta's row num
// data size, index size
RETURN_NOT_OK(rowset.reset_sizeinfo());
rowset.to_rowset_pb(&(*it));
}
return OLAP_SUCCESS;
}
Expand Down
33 changes: 32 additions & 1 deletion be/src/olap/rowset/alpha_rowset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,18 @@ AlphaRowset::AlphaRowset(const TabletSchema* schema,
}

OLAPStatus AlphaRowset::init() {
DCHECK(!is_inited());
if (is_inited()) {
return OLAP_SUCCESS;
}
OLAPStatus status = _init_segment_groups();
set_inited(true);
return status;
}

OLAPStatus AlphaRowset::load() {
if (is_loaded()) {
return OLAP_SUCCESS;
}
for (auto& segment_group: _segment_groups) {
// validate segment group
if (segment_group->validate() != OLAP_SUCCESS) {
Expand Down Expand Up @@ -523,4 +528,30 @@ std::shared_ptr<SegmentGroup> AlphaRowset::_segment_group_with_largest_size() {
return largest_segment_group;
}

OLAPStatus AlphaRowset::reset_sizeinfo() {
if (!is_loaded()) {
RETURN_NOT_OK(load());
}
// std::vector<PendingSegmentGroupPB> pending_segment_group_metas;
AlphaRowsetMetaSharedPtr alpha_rowset_meta = std::dynamic_pointer_cast<AlphaRowsetMeta>(_rowset_meta);
// alpha_rowset_meta->get_pending_segment_groups(&pending_segment_group_metas);
int32_t segment_group_idx = 0;
for (auto segment_group : _segment_groups) {
alpha_rowset_meta->set_data_disk_size(alpha_rowset_meta->data_disk_size() + segment_group->data_size());
alpha_rowset_meta->set_index_disk_size(alpha_rowset_meta->index_disk_size() + segment_group->index_size());
alpha_rowset_meta->set_total_disk_size(alpha_rowset_meta->total_disk_size()
+ segment_group->index_size() + segment_group->data_size());
alpha_rowset_meta->set_num_rows(alpha_rowset_meta->num_rows() + segment_group->num_rows());
// pending_segment_group_metas.at(segment_group_idx).set_index_size(segment_group->index_size());
// pending_segment_group_metas.at(segment_group_idx).set_data_size(segment_group->data_size());
// pending_segment_group_metas.at(segment_group_idx).set_num_rows(segment_group->num_rows());
++segment_group_idx;
}
// alpha_rowset_meta->clear_pending_segment_group();
// for (auto& pending_segment_group_meta : pending_segment_group_metas) {
// alpha_rowset_meta->add_pending_segment_group(pending_segment_group_meta);
// }
return OLAP_SUCCESS;
}

} // namespace doris
4 changes: 4 additions & 0 deletions be/src/olap/rowset/alpha_rowset.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ class AlphaRowset : public Rowset {

bool check_path(const std::string& path) override;

// when convert from old be, should set row num, index size, data size
// info by using segment's info
OLAPStatus reset_sizeinfo();

private:
OLAPStatus _init_segment_groups();

Expand Down
4 changes: 2 additions & 2 deletions be/src/olap/rowset/rowset_meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@ class RowsetMeta {
_rowset_meta_pb.set_version_hash(version_hash);
}

int num_rows() {
int64_t num_rows() {
return _rowset_meta_pb.num_rows();
}

void set_num_rows(int num_rows) {
void set_num_rows(int64_t num_rows) {
_rowset_meta_pb.set_num_rows(num_rows);
}

Expand Down