Skip to content

Commit 0c8d4ac

Browse files
committed
Sniffer: use daemon threads and define a reasonable thread name
1 parent cee9640 commit 0c8d4ac

File tree

1 file changed

+25
-1
lines changed
  • client/sniffer/src/main/java/org/elasticsearch/client/sniff

1 file changed

+25
-1
lines changed

client/sniffer/src/main/java/org/elasticsearch/client/sniff/Sniffer.java

+25-1
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@
3131
import java.util.concurrent.Executors;
3232
import java.util.concurrent.ScheduledExecutorService;
3333
import java.util.concurrent.ScheduledFuture;
34+
import java.util.concurrent.ThreadFactory;
3435
import java.util.concurrent.TimeUnit;
3536
import java.util.concurrent.atomic.AtomicBoolean;
37+
import java.util.concurrent.atomic.AtomicInteger;
3638

3739
/**
3840
* Class responsible for sniffing nodes from some source (default is elasticsearch itself) and setting them to a provided instance of
@@ -45,6 +47,7 @@
4547
public class Sniffer implements Closeable {
4648

4749
private static final Log logger = LogFactory.getLog(Sniffer.class);
50+
private static final String SNIFFER_THREAD_NAME = "es_rest_client_sniffer";
4851

4952
private final Task task;
5053

@@ -79,7 +82,8 @@ private Task(HostsSniffer hostsSniffer, RestClient restClient, long sniffInterva
7982
this.restClient = restClient;
8083
this.sniffIntervalMillis = sniffIntervalMillis;
8184
this.sniffAfterFailureDelayMillis = sniffAfterFailureDelayMillis;
82-
this.scheduledExecutorService = Executors.newScheduledThreadPool(1);
85+
SnifferThreadFactory threadFactory = new SnifferThreadFactory(SNIFFER_THREAD_NAME);
86+
this.scheduledExecutorService = Executors.newScheduledThreadPool(1, threadFactory);
8387
scheduleNextRun(0);
8488
}
8589

@@ -151,4 +155,24 @@ synchronized void shutdown() {
151155
public static SnifferBuilder builder(RestClient restClient) {
152156
return new SnifferBuilder(restClient);
153157
}
158+
159+
private static class SnifferThreadFactory implements ThreadFactory {
160+
161+
private final AtomicInteger threadNumber = new AtomicInteger(1);
162+
private final String namePrefix;
163+
private final ThreadFactory originalThreadFactory;
164+
165+
private SnifferThreadFactory(String namePrefix) {
166+
this.namePrefix = namePrefix;
167+
this.originalThreadFactory = Executors.defaultThreadFactory();
168+
}
169+
170+
@Override
171+
public Thread newThread(Runnable r) {
172+
Thread t = this.originalThreadFactory.newThread(r);
173+
t.setName(namePrefix + "[T#" + threadNumber.getAndIncrement() + "]");
174+
t.setDaemon(true);
175+
return t;
176+
}
177+
}
154178
}

0 commit comments

Comments
 (0)