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 20d67100567 [Fix](checker) Fixed infinite loop after internal error in checker. (#44479) 20d67100567 is described below commit 20d67100567dd926fdaa4ad203bf64d05bdbfcd8 Author: abmdocrt <lianyuk...@selectdb.com> AuthorDate: Fri Nov 22 20:58:49 2024 +0800 [Fix](checker) Fixed infinite loop after internal error in checker. (#44479) When the checker encounters an internal error, such as a transaction conflict, the return value will be less than 0 and the function will return immediately, but the related instance will not be removed from the map. Additionally, if the return value of the do check is not 0, the inverted check will not be performed. This PR fixes both of these issues. --- cloud/src/recycler/checker.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/cloud/src/recycler/checker.cpp b/cloud/src/recycler/checker.cpp index fe0887867b0..19a10d61c12 100644 --- a/cloud/src/recycler/checker.cpp +++ b/cloud/src/recycler/checker.cpp @@ -168,25 +168,17 @@ int Checker::start() { auto ctime_ms = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count(); g_bvar_checker_enqueue_cost_s.put(instance_id, ctime_ms / 1000 - enqueue_time_s); - ret = checker->do_check(); + int ret1 = checker->do_check(); + int ret2 = 0; if (config::enable_inverted_check) { - if (ret == 0) { - ret = checker->do_inverted_check(); - } - } - - if (ret < 0) { - // If ret < 0, it means that a temporary error occurred during the check process. - // The check job should not be considered finished, and the next round of check job - // should be retried as soon as possible. - return; + ret2 = checker->do_inverted_check(); } // If instance checker has been aborted, don't finish this job if (!checker->stopped()) { finish_instance_recycle_job(txn_kv_.get(), check_job_key, instance.instance_id(), - ip_port_, ret == 0, ctime_ms); + ip_port_, ret1 == 0 && ret2 == 0, ctime_ms); } { std::lock_guard lock(mtx_); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org