You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by hu...@apache.org on 2022/01/18 22:30:21 UTC
[helix] branch master updated: Daemonize ZkBucketDataAccessor GC_THREAD (#1936)
This is an automated email from the ASF dual-hosted git repository.
hulee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/master by this push:
new 3b49f55 Daemonize ZkBucketDataAccessor GC_THREAD (#1936)
3b49f55 is described below
commit 3b49f55df298e1d12daa078034137f58543319e5
Author: Henri Hagberg <he...@iki.fi>
AuthorDate: Wed Jan 19 00:30:13 2022 +0200
Daemonize ZkBucketDataAccessor GC_THREAD (#1936)
GC_THREAD (which is actually an ExecutorService, not Thread) is a static field in ZkBucketDataAccessor. The executor is started when ZkBucketDataAccessor class is initialized but it is never shut down. Since ExecutorService threads are generally not daemon threads, not shutting down GC_THREAD prevents JVM from shutting down cleanly.
This commit makes ZkBucketDataAccessor GC_THREAD a daemon thread so it doesn't prevent application shutdown.
---
.../main/java/org/apache/helix/manager/zk/ZkBucketDataAccessor.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZkBucketDataAccessor.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZkBucketDataAccessor.java
index 2f35994..521e3d7 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZkBucketDataAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZkBucketDataAccessor.java
@@ -67,7 +67,11 @@ public class ZkBucketDataAccessor implements BucketDataAccessor, AutoCloseable {
// Note that newScheduledThreadPool(1) may not work. newSingleThreadScheduledExecutor guarantees
// sequential execution, which is what we want for implementing TTL & GC here
private static final ScheduledExecutorService GC_THREAD =
- Executors.newSingleThreadScheduledExecutor();
+ Executors.newSingleThreadScheduledExecutor((runnable) -> {
+ Thread thread = new Thread(runnable, "ZkBucketDataAccessorGcThread");
+ thread.setDaemon(true);
+ return thread;
+ });
private final int _bucketSize;
private final long _versionTTLms;