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.
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 @@
   // 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;