This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new ba11d8dc67 [feature-wip](unique-key-merge-on-write) fix bugs on tablet
clone #12067
ba11d8dc67 is described below
commit ba11d8dc67d853e67e82a1717c6bd6578717522f
Author: zhannngchen <[email protected]>
AuthorDate: Fri Aug 26 10:37:00 2022 +0800
[feature-wip](unique-key-merge-on-write) fix bugs on tablet clone #12067
---
be/src/olap/tablet.cpp | 10 ++++++++++
be/src/olap/tablet_meta.cpp | 1 +
2 files changed, 11 insertions(+)
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 83e78f9c61..e038fe78ab 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -199,10 +199,13 @@ Status Tablet::revise_tablet_meta(const
std::vector<RowsetMetaSharedPtr>& rowset
_tablet_meta = new_tablet_meta;
} while (0);
+ RowsetVector rs_to_delete, rs_to_add;
+
for (auto& version : versions_to_delete) {
auto it = _rs_version_map.find(version);
DCHECK(it != _rs_version_map.end());
StorageEngine::instance()->add_unused_rowset(it->second);
+ rs_to_delete.push_back(it->second);
_rs_version_map.erase(it);
}
@@ -214,9 +217,16 @@ Status Tablet::revise_tablet_meta(const
std::vector<RowsetMetaSharedPtr>& rowset
LOG(WARNING) << "fail to init rowset. version=" << version;
return res;
}
+ rs_to_add.push_back(rowset);
_rs_version_map[version] = std::move(rowset);
}
+ if (keys_type() == UNIQUE_KEYS && enable_unique_key_merge_on_write()) {
+ auto new_rowset_tree = std::make_unique<RowsetTree>();
+ ModifyRowSetTree(*_rowset_tree, rs_to_delete, rs_to_add,
new_rowset_tree.get());
+ _rowset_tree = std::move(new_rowset_tree);
+ }
+
// reconstruct from tablet meta
_timestamped_version_tracker.construct_versioned_tracker(_tablet_meta->all_rs_metas());
// clear stale rowset
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index 1689c0a356..1a2c429dcc 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -212,6 +212,7 @@ TabletMeta::TabletMeta(const TabletMeta& b)
_in_restore_mode(b._in_restore_mode),
_preferred_rowset_type(b._preferred_rowset_type),
_storage_policy(b._storage_policy),
+
_enable_unique_key_merge_on_write(b._enable_unique_key_merge_on_write),
_delete_bitmap(b._delete_bitmap) {};
void TabletMeta::init_column_from_tcolumn(uint32_t unique_id, const TColumn&
tcolumn,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]