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
47 changes: 0 additions & 47 deletions be/src/cloud/cloud_cumulative_compaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -389,11 +389,6 @@ Status CloudCumulativeCompaction::modify_rowsets() {
stats.num_rows(), stats.data_size());
}
}
if (config::enable_delete_bitmap_merge_on_compaction &&
_tablet->keys_type() == KeysType::UNIQUE_KEYS &&
_tablet->enable_unique_key_merge_on_write() && _input_rowsets.size() != 1) {
RETURN_IF_ERROR(process_old_version_delete_bitmap());
}
// agg delete bitmap for pre rowsets
if (config::enable_agg_and_remove_pre_rowsets_delete_bitmap &&
_tablet->keys_type() == KeysType::UNIQUE_KEYS &&
Expand Down Expand Up @@ -440,48 +435,6 @@ Status CloudCumulativeCompaction::modify_rowsets() {
return Status::OK();
}

Status CloudCumulativeCompaction::process_old_version_delete_bitmap() {
// agg previously rowset old version delete bitmap
std::vector<RowsetSharedPtr> pre_rowsets {};
for (const auto& it : cloud_tablet()->rowset_map()) {
if (it.first.second < _input_rowsets.front()->start_version()) {
pre_rowsets.emplace_back(it.second);
}
}
std::sort(pre_rowsets.begin(), pre_rowsets.end(), Rowset::comparator);
if (!pre_rowsets.empty()) {
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>
to_remove_vec;
DeleteBitmapPtr new_delete_bitmap = nullptr;
agg_and_remove_old_version_delete_bitmap(pre_rowsets, to_remove_vec, new_delete_bitmap);
if (!new_delete_bitmap->empty()) {
// store agg delete bitmap
DBUG_EXECUTE_IF("CloudCumulativeCompaction.modify_rowsets.update_delete_bitmap_failed",
{
return Status::InternalError(
"test fail to update delete bitmap for tablet_id {}",
cloud_tablet()->tablet_id());
});
std::map<std::string, int64_t> rowset_to_versions;
RETURN_IF_ERROR(_engine.meta_mgr().cloud_update_delete_bitmap_without_lock(
*cloud_tablet(), new_delete_bitmap.get(), rowset_to_versions));

Version version(_input_rowsets.front()->start_version(),
_input_rowsets.back()->end_version());
for (auto it = new_delete_bitmap->delete_bitmap.begin();
it != new_delete_bitmap->delete_bitmap.end(); it++) {
_tablet->tablet_meta()->delete_bitmap().set(it->first, it->second);
}
_tablet->tablet_meta()->delete_bitmap().add_to_remove_queue(version.to_string(),
to_remove_vec);
DBUG_EXECUTE_IF("CumulativeCompaction.modify_rowsets.delete_expired_stale_rowsets", {
static_cast<CloudTablet*>(_tablet.get())->delete_expired_stale_rowsets();
});
}
}
return Status::OK();
}

Status CloudCumulativeCompaction::garbage_collection() {
RETURN_IF_ERROR(CloudCompactionMixin::garbage_collection());
cloud::TabletJobInfoPB job;
Expand Down
2 changes: 0 additions & 2 deletions be/src/cloud/cloud_cumulative_compaction.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ class CloudCumulativeCompaction : public CloudCompactionMixin {

void update_cumulative_point();

Status process_old_version_delete_bitmap();

ReaderType compaction_type() const override { return ReaderType::READER_CUMULATIVE_COMPACTION; }

int64_t _input_segments = 0;
Expand Down
18 changes: 0 additions & 18 deletions be/src/cloud/cloud_meta_mgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1434,24 +1434,6 @@ void CloudMetaMgr::remove_delete_bitmap_update_lock(int64_t table_id, int64_t lo
}
}

Status CloudMetaMgr::remove_old_version_delete_bitmap(
int64_t tablet_id,
const std::vector<std::tuple<std::string, uint64_t, uint64_t>>& to_delete) {
LOG(INFO) << "remove_old_version_delete_bitmap , tablet_id: " << tablet_id;
RemoveDeleteBitmapRequest req;
RemoveDeleteBitmapResponse res;
req.set_cloud_unique_id(config::cloud_unique_id);
req.set_tablet_id(tablet_id);
for (auto& value : to_delete) {
req.add_rowset_ids(std::get<0>(value));
req.add_begin_versions(std::get<1>(value));
req.add_end_versions(std::get<2>(value));
}
auto st = retry_rpc("remove old delete bitmap", req, &res,
&MetaService_Stub::remove_delete_bitmap);
return st;
}

void CloudMetaMgr::check_table_size_correctness(const RowsetMeta& rs_meta) {
if (!config::enable_table_size_correctness_check) {
return;
Expand Down
4 changes: 0 additions & 4 deletions be/src/cloud/cloud_meta_mgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,6 @@ class CloudMetaMgr {
void remove_delete_bitmap_update_lock(int64_t table_id, int64_t lock_id, int64_t initiator,
int64_t tablet_id);

Status remove_old_version_delete_bitmap(
int64_t tablet_id,
const std::vector<std::tuple<std::string, uint64_t, uint64_t>>& to_delete);

private:
bool sync_tablet_delete_bitmap_by_cache(CloudTablet* tablet, int64_t old_max_version,
std::ranges::range auto&& rs_metas,
Expand Down
3 changes: 0 additions & 3 deletions be/src/cloud/cloud_tablet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,6 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
std::vector<std::pair<Version, std::vector<RowsetSharedPtr>>> deleted_stale_rowsets;
int64_t expired_stale_sweep_endtime =
::time(nullptr) - config::tablet_rowset_stale_sweep_time_sec;
std::vector<std::string> version_to_delete;
{
std::unique_lock wlock(_meta_lock);

Expand Down Expand Up @@ -438,14 +437,12 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
_tablet_meta->delete_stale_rs_meta_by_version(v_ts->version());
}
Version version(start_version, end_version);
version_to_delete.emplace_back(version.to_string());
if (!stale_rowsets.empty()) {
deleted_stale_rowsets.emplace_back(version, std::move(stale_rowsets));
}
}
_reconstruct_version_tracker_if_necessary();
}
_tablet_meta->delete_bitmap().remove_stale_delete_bitmap_from_queue(version_to_delete);
recycle_cached_data(expired_rowsets);
if (config::enable_mow_verbose_log) {
LOG_INFO("finish delete_expired_stale_rowset for tablet={}", tablet_id());
Expand Down
1 change: 0 additions & 1 deletion be/src/common/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1472,7 +1472,6 @@ DEFINE_mInt32(check_score_rounds_num, "1000");

DEFINE_Int32(query_cache_size, "512");

DEFINE_mBool(enable_delete_bitmap_merge_on_compaction, "false");
// Enable validation to check the correctness of table size.
DEFINE_Bool(enable_table_size_correctness_check, "false");
DEFINE_Bool(force_regenerate_rowsetid_on_start_error, "false");
Expand Down
1 change: 0 additions & 1 deletion be/src/common/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -1546,7 +1546,6 @@ DECLARE_mInt32(check_score_rounds_num);
DECLARE_Int32(query_cache_size);
DECLARE_Bool(force_regenerate_rowsetid_on_start_error);

DECLARE_mBool(enable_delete_bitmap_merge_on_compaction);
// Enable validation to check the correctness of table size.
DECLARE_Bool(enable_table_size_correctness_check);
// Enable sleep 5s between delete cumulative compaction.
Expand Down
64 changes: 0 additions & 64 deletions be/src/olap/compaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1049,33 +1049,6 @@ Status CloudCompactionMixin::update_delete_bitmap() {
return Status::OK();
}

void Compaction::agg_and_remove_old_version_delete_bitmap(
std::vector<RowsetSharedPtr>& pre_rowsets,
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>&
to_remove_vec,
DeleteBitmapPtr& new_delete_bitmap) {
// agg previously rowset old version delete bitmap
auto pre_max_version = _output_rowset->version().second;
new_delete_bitmap = std::make_shared<DeleteBitmap>(_tablet->tablet_meta()->tablet_id());
for (auto& rowset : pre_rowsets) {
if (rowset->rowset_meta()->total_disk_size() == 0) {
continue;
}
for (uint32_t seg_id = 0; seg_id < rowset->num_segments(); ++seg_id) {
rowset->rowset_id().to_string();
DeleteBitmap::BitmapKey start {rowset->rowset_id(), seg_id, 0};
DeleteBitmap::BitmapKey end {rowset->rowset_id(), seg_id, pre_max_version};
auto d = _tablet->tablet_meta()->delete_bitmap().get_agg(
{rowset->rowset_id(), seg_id, pre_max_version});
to_remove_vec.emplace_back(std::make_tuple(_tablet->tablet_id(), start, end));
if (d->isEmpty()) {
continue;
}
new_delete_bitmap->set(end, *d);
}
}
}

Status CompactionMixin::construct_output_rowset_writer(RowsetWriterContext& ctx) {
// only do index compaction for dup_keys and unique_keys with mow enabled
if (config::inverted_index_compaction_enable &&
Expand Down Expand Up @@ -1277,13 +1250,6 @@ Status CompactionMixin::modify_rowsets() {
tablet()->delete_expired_stale_rowset();
}

if (config::enable_delete_bitmap_merge_on_compaction &&
compaction_type() == ReaderType::READER_CUMULATIVE_COMPACTION &&
_tablet->keys_type() == KeysType::UNIQUE_KEYS &&
_tablet->enable_unique_key_merge_on_write() && _input_rowsets.size() != 1) {
process_old_version_delete_bitmap();
}

int64_t cur_max_version = 0;
{
std::shared_lock rlock(_tablet->get_header_lock());
Expand All @@ -1303,36 +1269,6 @@ Status CompactionMixin::modify_rowsets() {
return Status::OK();
}

void CompactionMixin::process_old_version_delete_bitmap() {
std::vector<RowsetSharedPtr> pre_rowsets {};
for (const auto& it : tablet()->rowset_map()) {
if (it.first.second < _input_rowsets.front()->start_version()) {
pre_rowsets.emplace_back(it.second);
}
}
std::sort(pre_rowsets.begin(), pre_rowsets.end(), Rowset::comparator);
if (!pre_rowsets.empty()) {
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>
to_remove_vec;
DeleteBitmapPtr new_delete_bitmap = nullptr;
agg_and_remove_old_version_delete_bitmap(pre_rowsets, to_remove_vec, new_delete_bitmap);
if (!new_delete_bitmap->empty()) {
// store agg delete bitmap
Version version(_input_rowsets.front()->start_version(),
_input_rowsets.back()->end_version());
for (auto it = new_delete_bitmap->delete_bitmap.begin();
it != new_delete_bitmap->delete_bitmap.end(); it++) {
_tablet->tablet_meta()->delete_bitmap().set(it->first, it->second);
}
_tablet->tablet_meta()->delete_bitmap().add_to_remove_queue(version.to_string(),
to_remove_vec);
DBUG_EXECUTE_IF("CumulativeCompaction.modify_rowsets.delete_expired_stale_rowsets", {
static_cast<Tablet*>(_tablet.get())->delete_expired_stale_rowset();
});
}
}
}

bool CompactionMixin::_check_if_includes_input_rowsets(
const RowsetIdUnorderedSet& commit_rowset_ids_set) const {
std::vector<RowsetId> commit_rowset_ids {};
Expand Down
8 changes: 0 additions & 8 deletions be/src/olap/compaction.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,6 @@ class Compaction {

virtual Status update_delete_bitmap() = 0;

void agg_and_remove_old_version_delete_bitmap(
std::vector<RowsetSharedPtr>& pre_rowsets,
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>&
to_remove_vec,
DeleteBitmapPtr& new_delete_bitmap);

// the root tracker for this compaction
std::shared_ptr<MemTrackerLimiter> _mem_tracker;

Expand Down Expand Up @@ -180,8 +174,6 @@ class CompactionMixin : public Compaction {

Status do_compact_ordered_rowsets();

void process_old_version_delete_bitmap();

bool _check_if_includes_input_rowsets(const RowsetIdUnorderedSet& commit_rowset_ids_set) const;

void update_compaction_level();
Expand Down
3 changes: 0 additions & 3 deletions be/src/olap/tablet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -828,7 +828,6 @@ void Tablet::delete_expired_stale_rowset() {
auto old_meta_size = _tablet_meta->all_stale_rs_metas().size();

// do delete operation
std::vector<std::string> version_to_delete;
auto to_delete_iter = stale_version_path_map.begin();
while (to_delete_iter != stale_version_path_map.end()) {
std::vector<TimestampedVersionSharedPtr>& to_delete_version =
Expand Down Expand Up @@ -867,13 +866,11 @@ void Tablet::delete_expired_stale_rowset() {
_delete_stale_rowset_by_version(timestampedVersion->version());
}
Version version(start_version, end_version);
version_to_delete.emplace_back(version.to_string());
to_delete_iter++;
if (!remove_rowset_ids.empty()) {
deleted_stale_rowsets.emplace_back(version, remove_rowset_ids);
}
}
_tablet_meta->delete_bitmap().remove_stale_delete_bitmap_from_queue(version_to_delete);

bool reconstructed = _reconstruct_version_tracker_if_necessary();

Expand Down
48 changes: 0 additions & 48 deletions be/src/olap/tablet_meta.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1310,54 +1310,6 @@ void DeleteBitmap::merge(const DeleteBitmap& other) {
}
}

void DeleteBitmap::add_to_remove_queue(
const std::string& version_str,
const std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>&
vector) {
std::shared_lock l(stale_delete_bitmap_lock);
_stale_delete_bitmap.emplace(version_str, vector);
}

void DeleteBitmap::remove_stale_delete_bitmap_from_queue(const std::vector<std::string>& vector) {
if (!config::enable_delete_bitmap_merge_on_compaction) {
return;
}
std::shared_lock l(stale_delete_bitmap_lock);
//<rowset_id, start_version, end_version>
std::vector<std::tuple<std::string, uint64_t, uint64_t>> to_delete;
int64_t tablet_id = -1;
for (auto& version_str : vector) {
auto it = _stale_delete_bitmap.find(version_str);
if (it != _stale_delete_bitmap.end()) {
auto delete_bitmap_vector = it->second;
for (auto& delete_bitmap_tuple : it->second) {
if (tablet_id < 0) {
tablet_id = std::get<0>(delete_bitmap_tuple);
}
auto start_bmk = std::get<1>(delete_bitmap_tuple);
auto end_bmk = std::get<2>(delete_bitmap_tuple);
// the key range of to be removed is [start_bmk,end_bmk),
// due to the different definitions of the right boundary,
// so use end_bmk as right boundary when removing local delete bitmap,
// use (end_bmk - 1) as right boundary when removing ms delete bitmap
remove(start_bmk, end_bmk);
to_delete.emplace_back(std::make_tuple(std::get<0>(start_bmk).to_string(), 0,
std::get<2>(end_bmk) - 1));
}
_stale_delete_bitmap.erase(version_str);
}
}
if (tablet_id == -1 || to_delete.empty() || !config::is_cloud_mode()) {
return;
}
CloudStorageEngine& engine = ExecEnv::GetInstance()->storage_engine().to_cloud();
auto st = engine.meta_mgr().remove_old_version_delete_bitmap(tablet_id, to_delete);
if (!st.ok()) {
LOG(WARNING) << "fail to remove_stale_delete_bitmap_from_queue for tablet=" << tablet_id
<< ",st=" << st;
}
}

uint64_t DeleteBitmap::get_delete_bitmap_count() {
std::shared_lock l(lock);
uint64_t count = 0;
Expand Down
10 changes: 0 additions & 10 deletions be/src/olap/tablet_meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,6 @@ class TabletMeta : public MetadataAdder<TabletMeta> {
class DeleteBitmap {
public:
mutable std::shared_mutex lock;
mutable std::shared_mutex stale_delete_bitmap_lock;
using SegmentId = uint32_t;
using Version = uint64_t;
using BitmapKey = std::tuple<RowsetId, SegmentId, Version>;
Expand Down Expand Up @@ -551,11 +550,6 @@ class DeleteBitmap {

void remove_sentinel_marks();

void add_to_remove_queue(const std::string& version_str,
const std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey,
DeleteBitmap::BitmapKey>>& vector);
void remove_stale_delete_bitmap_from_queue(const std::vector<std::string>& vector);

uint64_t get_delete_bitmap_count();

void traverse_rowset_and_version(
Expand Down Expand Up @@ -607,10 +601,6 @@ class DeleteBitmap {
int64_t _tablet_id;
mutable std::shared_mutex _rowset_cache_version_lock;
mutable std::map<RowsetId, std::map<SegmentId, Version>> _rowset_cache_version;
// <version, <tablet_id, BitmapKeyStart, BitmapKeyEnd>>
std::map<std::string,
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>>
_stale_delete_bitmap;
};

inline TabletUid TabletMeta::tablet_uid() const {
Expand Down
Loading
Loading