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

Reply via email to