From a4cbf64e66b9e7f9a56db78f3dd5e4368faf6c89 Mon Sep 17 00:00:00 2001 From: Suresh Prakash Date: Fri, 12 Jul 2024 06:24:54 +0530 Subject: [PATCH] Define threadpool properties for doc store metric reporter threads --- docstore-metrics/build.gradle.kts | 1 + .../docstore/metrics/DocStoreMetricsRegistry.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docstore-metrics/build.gradle.kts b/docstore-metrics/build.gradle.kts index 9942cfe..d892993 100644 --- a/docstore-metrics/build.gradle.kts +++ b/docstore-metrics/build.gradle.kts @@ -13,4 +13,5 @@ dependencies { api(project(":service-framework-spi")) api(platform("com.fasterxml.jackson:jackson-bom:2.16.0")) implementation(project(":platform-metrics")) + implementation("com.google.guava:guava:32.0.1-jre") } diff --git a/docstore-metrics/src/main/java/org/hypertrace/core/serviceframework/docstore/metrics/DocStoreMetricsRegistry.java b/docstore-metrics/src/main/java/org/hypertrace/core/serviceframework/docstore/metrics/DocStoreMetricsRegistry.java index dac2774..6dd72fe 100644 --- a/docstore-metrics/src/main/java/org/hypertrace/core/serviceframework/docstore/metrics/DocStoreMetricsRegistry.java +++ b/docstore-metrics/src/main/java/org/hypertrace/core/serviceframework/docstore/metrics/DocStoreMetricsRegistry.java @@ -1,16 +1,19 @@ package org.hypertrace.core.serviceframework.docstore.metrics; +import static java.lang.Thread.MIN_PRIORITY; import static java.util.Collections.emptyList; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.stream.Collectors.toUnmodifiableList; import static org.hypertrace.core.serviceframework.metrics.PlatformMetricsRegistry.registerResizeableGauge; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import io.micrometer.common.lang.Nullable; import java.time.Duration; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicLong; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; @@ -90,7 +93,7 @@ public DocStoreMetricsRegistry withStandardMetricsReportingInterval( */ public void monitor() { shutdown(); - executor = Executors.newScheduledThreadPool(threadPoolSize); + executor = Executors.newScheduledThreadPool(threadPoolSize, buildThreadFactory()); addShutdownHook(); @@ -105,6 +108,14 @@ public void shutdown() { } } + private ThreadFactory buildThreadFactory() { + return new ThreadFactoryBuilder() + .setNameFormat("doc-store-metrics-reporter-%d") + .setDaemon(true) + .setPriority(MIN_PRIORITY) + .build(); + } + private void addShutdownHook() { if (platformLifecycle != null) { platformLifecycle.shutdownComplete().thenRun(this::shutdown);