Skip to content

Commit 923d23e

Browse files
snagobrian-brazil
authored andcommitted
Set thread names in HTTPServer (#456)
Name threads in the HTTPServer thread pool to make them easily identifiable in e.g. thread dumps. Before: pool-1-thread-3 After: prometheus-http-1-3 Signed-off-by: Robin Karlsson <snago86@gmail.com>
1 parent fcde955 commit 923d23e

File tree

1 file changed

+12
-6
lines changed
  • simpleclient_httpserver/src/main/java/io/prometheus/client/exporter

1 file changed

+12
-6
lines changed

simpleclient_httpserver/src/main/java/io/prometheus/client/exporter/HTTPServer.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.concurrent.Executors;
1818
import java.util.concurrent.FutureTask;
1919
import java.util.concurrent.ThreadFactory;
20+
import java.util.concurrent.atomic.AtomicInteger;
2021
import java.util.zip.GZIPOutputStream;
2122

2223
import com.sun.net.httpserver.HttpHandler;
@@ -112,24 +113,29 @@ protected static Set<String> parseQuery(String query) throws IOException {
112113
}
113114

114115

115-
static class DaemonThreadFactory implements ThreadFactory {
116-
private ThreadFactory delegate;
116+
static class NamedDaemonThreadFactory implements ThreadFactory {
117+
private static final AtomicInteger POOL_NUMBER = new AtomicInteger(1);
118+
119+
private final int poolNumber = POOL_NUMBER.getAndIncrement();
120+
private final AtomicInteger threadNumber = new AtomicInteger(1);
121+
private final ThreadFactory delegate;
117122
private final boolean daemon;
118123

119-
DaemonThreadFactory(ThreadFactory delegate, boolean daemon) {
124+
NamedDaemonThreadFactory(ThreadFactory delegate, boolean daemon) {
120125
this.delegate = delegate;
121126
this.daemon = daemon;
122127
}
123128

124129
@Override
125130
public Thread newThread(Runnable r) {
126131
Thread t = delegate.newThread(r);
132+
t.setName(String.format("prometheus-http-%d-%d", poolNumber, threadNumber.getAndIncrement()));
127133
t.setDaemon(daemon);
128134
return t;
129135
}
130136

131137
static ThreadFactory defaultThreadFactory(boolean daemon) {
132-
return new DaemonThreadFactory(Executors.defaultThreadFactory(), daemon);
138+
return new NamedDaemonThreadFactory(Executors.defaultThreadFactory(), daemon);
133139
}
134140
}
135141

@@ -146,7 +152,7 @@ public HTTPServer(InetSocketAddress addr, CollectorRegistry registry, boolean da
146152
HttpHandler mHandler = new HTTPMetricHandler(registry);
147153
server.createContext("/", mHandler);
148154
server.createContext("/metrics", mHandler);
149-
executorService = Executors.newFixedThreadPool(5, DaemonThreadFactory.defaultThreadFactory(daemon));
155+
executorService = Executors.newFixedThreadPool(5, NamedDaemonThreadFactory.defaultThreadFactory(daemon));
150156
server.setExecutor(executorService);
151157
start(daemon);
152158
}
@@ -199,7 +205,7 @@ public void run() {
199205
server.start();
200206
}
201207
}, null);
202-
DaemonThreadFactory.defaultThreadFactory(daemon).newThread(startTask).start();
208+
NamedDaemonThreadFactory.defaultThreadFactory(daemon).newThread(startTask).start();
203209
try {
204210
startTask.get();
205211
} catch (ExecutionException e) {

0 commit comments

Comments
 (0)