This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new 732f0c1e5 [tserver] limit number of trace metrics for TabletCopyClient
732f0c1e5 is described below

commit 732f0c1e51bca04091431859918a3b84866373a0
Author: Alexey Serbin <ale...@apache.org>
AuthorDate: Thu May 2 18:48:50 2024 -0700

    [tserver] limit number of trace metrics for TabletCopyClient
    
    The trace metrics registry assumes that the number of entries is quite
    small, with the current threshold of 100.  In its turn, a thread pool
    unconditionally registers and updates its trace metrics while executing
    submitted tasks.  Since a tablet server might host thousands of tablet
    replicas, it's not a good idea to include the UUID of the tablet into
    the name of the download thread pool spawned by every TabletCopyClient
    instance.
    
    This is a follow-up to 0d95304fa46ee5d96bcaa934c7660369f2860e06.
    
    Change-Id: I334aa81aaed2378e7cae558bd8bb9e0f0c970fec
    Reviewed-on: http://gerrit.cloudera.org:8080/21393
    Tested-by: Marton Greber <greber...@gmail.com>
    Reviewed-by: Marton Greber <greber...@gmail.com>
---
 src/kudu/tserver/tablet_copy_client.cc | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/kudu/tserver/tablet_copy_client.cc 
b/src/kudu/tserver/tablet_copy_client.cc
index d5c114675..fc49f42a1 100644
--- a/src/kudu/tserver/tablet_copy_client.cc
+++ b/src/kudu/tserver/tablet_copy_client.cc
@@ -232,9 +232,17 @@ TabletCopyClient::TabletCopyClient(
   if (dst_tablet_copy_metrics_) {
     dst_tablet_copy_metrics_->open_client_sessions->Increment();
   }
-  CHECK_OK(ThreadPoolBuilder("tablet-download-pool-" + tablet_id_)
+
+  // These thread pools are ephemeral, and there might be multiple pools with
+  // the same name "tablet-download-pool" running at the same time. They are 
not
+  // differentiated by 'tablet_id' or other dynamic information -- that's to
+  // avoid registering too many entries in the trace metrics dictionary
+  // (see trace_metrics.{h,cc} for details). So, all the trace metrics for
+  // these thread pools will be accumulated under a few thread pool metrics
+  // for all the tablet copying clients ever spawned.
+  CHECK_OK(ThreadPoolBuilder("tablet-download-pool")
+               .set_min_threads(1)
                
.set_max_threads(FLAGS_tablet_copy_download_threads_nums_per_session)
-               
.set_min_threads(FLAGS_tablet_copy_download_threads_nums_per_session)
                .Build(&tablet_download_pool_));
 }
 

Reply via email to