diff --git a/be/src/cloud/cloud_meta_mgr.cpp b/be/src/cloud/cloud_meta_mgr.cpp index d1c6d4a5f2305b..dff85b3f639258 100644 --- a/be/src/cloud/cloud_meta_mgr.cpp +++ b/be/src/cloud/cloud_meta_mgr.cpp @@ -139,6 +139,8 @@ bvar::LatencyRecorder g_cloud_commit_txn_resp_redirect_latency("cloud_table_stat bvar::Adder g_cloud_meta_mgr_rpc_timeout_count("cloud_meta_mgr_rpc_timeout_count"); bvar::Window> g_cloud_ms_rpc_timeout_count_window( "cloud_meta_mgr_rpc_timeout_qps", &g_cloud_meta_mgr_rpc_timeout_count, 30); +bvar::LatencyRecorder g_cloud_be_mow_get_dbm_lock_backoff_sleep_time( + "cloud_be_mow_get_dbm_lock_backoff_sleep_time"); class MetaServiceProxy { public: @@ -1378,6 +1380,7 @@ Status CloudMetaMgr::get_delete_bitmap_update_lock(const CloudTablet& tablet, in Status st; std::default_random_engine rng = make_random_engine(); std::uniform_int_distribution u(500, 2000); + uint64_t backoff_sleep_time_ms {0}; do { st = retry_rpc("get delete bitmap update lock", req, &res, &MetaService_Stub::get_delete_bitmap_update_lock); @@ -1389,8 +1392,12 @@ Status CloudMetaMgr::get_delete_bitmap_update_lock(const CloudTablet& tablet, in LOG(WARNING) << "get delete bitmap lock conflict. " << debug_info(req) << " retry_times=" << retry_times << " sleep=" << duration_ms << "ms : " << res.status().msg(); + auto start = std::chrono::steady_clock::now(); bthread_usleep(duration_ms * 1000); + auto end = std::chrono::steady_clock::now(); + backoff_sleep_time_ms += duration_cast(end - start).count(); } while (++retry_times <= 100); + g_cloud_be_mow_get_dbm_lock_backoff_sleep_time << backoff_sleep_time_ms; if (res.status().code() == MetaServiceCode::KV_TXN_CONFLICT_RETRY_EXCEEDED_MAX_TIMES) { return Status::Error( "txn conflict when get delete bitmap update lock, table_id {}, lock_id {}, "