github-actions[bot] commented on code in PR #65534:
URL: https://github.com/apache/doris/pull/65534#discussion_r3570141468


##########
cloud/src/recycler/recycler.cpp:
##########
@@ -3131,14 +3146,19 @@ int InstanceRecycler::delete_rowset_data(const 
RowsetMetaCloudPB& rs_meta_pb) {
     int64_t tablet_id = rs_meta_pb.tablet_id();
     const auto& rowset_id = rs_meta_pb.rowset_id_v2();
     for (int64_t i = 0; i < num_segments; ++i) {
-        file_paths.push_back(segment_path(tablet_id, rowset_id, i));
+        add_file_to_delete_if_not_packed(rs_meta_pb, segment_path(tablet_id, 
rowset_id, i),

Review Comment:
   This packed-slice guard is not reached for `BEGIN_PARTIAL_UPDATE` rowsets. 
`CloudRowsetWriter::build()` collects `packed_slice_locations` before it 
switches partial-update rowsets to `BEGIN_PARTIAL_UPDATE`, but both recycler 
paths still route that state to `delete_rowset_data(resource_id, tablet_id, 
rowset_id)` / `delete_prefix(rowset_path_prefix(...))` before entering this 
loop. That means an aborted partial-update tmp rowset with packed slices still 
deletes every `data/{tablet}/{rowset_id}_*` object by prefix, bypassing the 
protection this patch adds for the normal explicit-file path. Please make the 
prefix cleanup packed-aware as well, for example by listing the prefix and 
excluding paths present in `packed_slice_locations`, and add coverage for 
packed `BEGIN_PARTIAL_UPDATE` tmp rowsets.



##########
cloud/src/recycler/recycler.cpp:
##########
@@ -3882,11 +3902,15 @@ int InstanceRecycler::delete_rowset_data(
             continue;
         }
         for (int64_t i = 0; i < num_segments; ++i) {
-            file_paths.push_back(segment_path(tablet_id, rowset_id, i));
+            add_file_to_delete_if_not_packed(rs, segment_path(tablet_id, 
rowset_id, i),

Review Comment:
   In the all-packed case this helper can skip every segment/index path for a 
rowset, leaving `file_paths` empty. The batch metrics below are updated only by 
iterating the paths passed to `delete_files()` and parsing a rowset id from 
each path, while empty deletes return success. So a rowset can have its packed 
ref counts decremented and its recycle/tmp KVs removed, but 
`total_recycled_num`, `total_recycled_data_size`, and 
`segment_metrics_context_` never include it. Please account successful rowsets 
independently of the non-empty object path list, and add a regression to the 
new packed batch test that checks the recycler metrics.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to