1717import java .util .concurrent .Executors ;
1818import java .util .concurrent .FutureTask ;
1919import java .util .concurrent .ThreadFactory ;
20+ import java .util .concurrent .atomic .AtomicInteger ;
2021import java .util .zip .GZIPOutputStream ;
2122
2223import 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