From 8445ee9e2847c806726d002a3c18f57e2abbf32c Mon Sep 17 00:00:00 2001 From: Hongqin-Li Date: Mon, 12 Dec 2022 07:11:36 +0000 Subject: [PATCH] Fix unexpected EAGAIN yield from autoinc service --- src/share/ob_tablet_autoincrement_service.cpp | 8 ++++++-- src/share/ob_tablet_autoincrement_service.h | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/share/ob_tablet_autoincrement_service.cpp b/src/share/ob_tablet_autoincrement_service.cpp index 69d6c18846..a9510f1b88 100644 --- a/src/share/ob_tablet_autoincrement_service.cpp +++ b/src/share/ob_tablet_autoincrement_service.cpp @@ -169,11 +169,15 @@ int ObTabletAutoincMgr::fetch_new_range(const ObTabletAutoincParam ¶m, } } if (OB_SUCCESS == tmp_ret) { - while (OB_FAIL(ret) && is_retryable(ret) && retry_times < RETRY_TIMES_LIMIT) { + bool worker_err = false; + while (OB_FAIL(ret) && !worker_err && is_retryable(ret)) { ++retry_times; ob_usleep(RETRY_INTERVAL); res.reset(); - if (OB_FAIL(srv_rpc_proxy->to(leader_addr).fetch_tablet_autoinc_seq_cache(arg, res))) { + if (OB_FAIL(THIS_WORKER.check_status())) { + worker_err = true; + LOG_WARN("failed to check status", K(ret)); + } else if (OB_FAIL(srv_rpc_proxy->to(leader_addr).fetch_tablet_autoinc_seq_cache(arg, res))) { LOG_WARN("fail to fetch autoinc cache for tablets", K(ret), K(retry_times), K(arg)); } } diff --git a/src/share/ob_tablet_autoincrement_service.h b/src/share/ob_tablet_autoincrement_service.h index 414d50dc95..dda367a0fb 100644 --- a/src/share/ob_tablet_autoincrement_service.h +++ b/src/share/ob_tablet_autoincrement_service.h @@ -85,7 +85,6 @@ private: private: static const int64_t PREFETCH_THRESHOLD = 4; static const int64_t RETRY_INTERVAL = 100 * 1000L; // 100ms - static const int64_t RETRY_TIMES_LIMIT = 10; lib::ObMutex mutex_; common::ObTabletID tablet_id_; uint64_t next_value_;