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


##########
cloud/src/recycler/recycler.cpp:
##########
@@ -2914,108 +2913,110 @@ int InstanceRecycler::recycle_tablets(int64_t 
table_id, int64_t index_id,
         }
         int64_t tablet_id = tablet_meta_pb.tablet_id();
 
-        if (!check_lazy_txn_finished(txn_kv_, instance_id_, 
tablet_meta_pb.tablet_id())) {
+        if (config::enable_recycler_check_lazy_txn_finished &&
+            !check_lazy_txn_finished(txn_kv_, instance_id_, 
tablet_meta_pb.tablet_id())) {
             LOG(WARNING) << "lazy txn not finished tablet_id=" << 
tablet_meta_pb.tablet_id();

Review Comment:
   This skipped-tablet path is not represented in `tablets_info`, so the range 
delete below can still remove metadata for a tablet whose cleanup did not run. 
For example, if tablets A and C recycle successfully but tablet B returns here 
because `check_lazy_txn_finished()` is false, `loop_done()` only sees A/C, 
`has_empty_key` remains false, and the range remove from A through C can delete 
B's `meta_tablet_key` while B still has pending lazy commits and unrecycled 
data. This is distinct from the existing empty-result partial-failure thread 
because this path never adds a `TabletInfo` placeholder. Please add a failure 
placeholder or otherwise disable range deletion whenever a scanned tablet is 
skipped before `sync_executor.add()`.



-- 
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