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]