This is an automated email from the ASF dual-hosted git repository. dataroaring 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 5f2559eec49 [opt](recycler) Add recycler metrics for delete by prefix (#52709) 5f2559eec49 is described below commit 5f2559eec49eb936a69903d41ea4201f3ea956ab Author: Uniqueyou <wangyix...@selectdb.com> AuthorDate: Sat Jul 26 15:45:13 2025 +0800 [opt](recycler) Add recycler metrics for delete by prefix (#52709) --- cloud/src/recycler/recycler.cpp | 48 ++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/cloud/src/recycler/recycler.cpp b/cloud/src/recycler/recycler.cpp index 9e4fd3fc348..0505ebca91f 100644 --- a/cloud/src/recycler/recycler.cpp +++ b/cloud/src/recycler/recycler.cpp @@ -1332,6 +1332,7 @@ int InstanceRecycler::recycle_partitions() { partition_version_keys.push_back(partition_version_key( {instance_id_, part_pb.db_id(), part_pb.table_id(), partition_id})); } + metrics_context.total_recycled_num = num_recycled; metrics_context.report(); } return ret; @@ -1764,7 +1765,11 @@ int InstanceRecycler::delete_rowset_data( const auto& rowset_id = rs.rowset_id_v2(); int64_t tablet_id = rs.tablet_id(); int64_t num_segments = rs.num_segments(); - if (num_segments <= 0) continue; + if (num_segments <= 0) { + metrics_context.total_recycled_num++; + metrics_context.total_recycled_data_size += rs.total_disk_size(); + continue; + } // Process inverted indexes std::vector<std::pair<int64_t, std::string>> index_ids; @@ -2397,7 +2402,7 @@ int InstanceRecycler::recycle_rowsets() { int64_t earlest_ts = std::numeric_limits<int64_t>::max(); - auto handle_rowset_kv = [&, this](std::string_view k, std::string_view v) -> int { + auto handle_rowset_kv = [&](std::string_view k, std::string_view v) -> int { ++num_scanned; total_rowset_key_size += k.size(); total_rowset_value_size += v.size(); @@ -2407,13 +2412,13 @@ int InstanceRecycler::recycle_rowsets() { return -1; } - int final_expiration = calculate_rowset_expired_time(instance_id_, rowset, &earlest_ts); + int64_t current_time = ::time(nullptr); + int64_t expiration = calculate_rowset_expired_time(instance_id_, rowset, &earlest_ts); VLOG_DEBUG << "recycle rowset scan, key=" << hex(k) << " num_scanned=" << num_scanned - << " num_expired=" << num_expired << " expiration=" << final_expiration + << " num_expired=" << num_expired << " expiration=" << expiration << " RecycleRowsetPB=" << rowset.ShortDebugString(); - int64_t current_time = ::time(nullptr); - if (current_time < final_expiration) { // not expired + if (current_time < expiration) { // not expired return 0; } ++num_expired; @@ -2476,9 +2481,8 @@ int InstanceRecycler::recycle_rowsets() { } else { num_compacted += rowset.type() == RecycleRowsetPB::COMPACT; rowset_keys.emplace_back(k); - if (rowset_meta->num_segments() > 0) { // Skip empty rowset - rowsets.emplace(rowset_meta->rowset_id_v2(), std::move(*rowset_meta)); - } else { + rowsets.emplace(rowset_meta->rowset_id_v2(), std::move(*rowset_meta)); + if (rowset_meta->num_segments() <= 0) { // Skip empty rowset ++num_empty_rowset; } } @@ -2627,9 +2631,7 @@ int InstanceRecycler::recycle_tmp_rowsets() { << " num_expired=" << num_expired; tmp_rowset_keys.push_back(k); - if (rowset.num_segments() > 0) { // Skip empty rowset - tmp_rowsets.emplace(rowset.rowset_id_v2(), std::move(rowset)); - } + tmp_rowsets.emplace(rowset.rowset_id_v2(), std::move(rowset)); return 0; }; @@ -3814,15 +3816,10 @@ int InstanceRecycler::scan_and_statistics_rowsets() { return 0; } } - if (rowset.type() != RecycleRowsetPB::PREPARE) { - if (rowset_meta->num_segments() > 0) { - metrics_context.total_need_recycle_num++; - segment_metrics_context_.total_need_recycle_num += rowset_meta->num_segments(); - segment_metrics_context_.total_need_recycle_data_size += - rowset_meta->total_disk_size(); - metrics_context.total_need_recycle_data_size += rowset_meta->total_disk_size(); - } - } + metrics_context.total_need_recycle_num++; + metrics_context.total_need_recycle_data_size += rowset_meta->total_disk_size(); + segment_metrics_context_.total_need_recycle_num += rowset_meta->num_segments(); + segment_metrics_context_.total_need_recycle_data_size += rowset_meta->total_disk_size(); return 0; }; return scan_and_recycle(recyc_rs_key0, recyc_rs_key1, std::move(handle_rowset_kv), @@ -3866,16 +3863,13 @@ int InstanceRecycler::scan_and_statistics_tmp_rowsets() { if (rowset.num_segments() > 0) [[unlikely]] { // impossible return 0; } - metrics_context.total_need_recycle_num++; return 0; } metrics_context.total_need_recycle_num++; - if (rowset.num_segments() > 0) { - metrics_context.total_need_recycle_data_size += rowset.total_disk_size(); - segment_metrics_context_.total_need_recycle_data_size += rowset.total_disk_size(); - segment_metrics_context_.total_need_recycle_num += rowset.num_segments(); - } + metrics_context.total_need_recycle_data_size += rowset.total_disk_size(); + segment_metrics_context_.total_need_recycle_data_size += rowset.total_disk_size(); + segment_metrics_context_.total_need_recycle_num += rowset.num_segments(); return 0; }; return scan_and_recycle(tmp_rs_key0, tmp_rs_key1, std::move(handle_tmp_rowsets_kv), --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org