Skip to content

Commit 957cbe2

Browse files
dnovitskikarenc-bq
andauthored
Set names for all internal threads (#1410)
Co-authored-by: Karen <[email protected]>
1 parent 4136671 commit 957cbe2

14 files changed

+97
-83
lines changed

wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/ClusterTopologyMonitorImpl.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.concurrent.ConcurrentHashMap;
3232
import java.util.concurrent.Executor;
3333
import java.util.concurrent.ExecutorService;
34-
import java.util.concurrent.Executors;
3534
import java.util.concurrent.TimeUnit;
3635
import java.util.concurrent.TimeoutException;
3736
import java.util.concurrent.atomic.AtomicBoolean;
@@ -50,6 +49,7 @@
5049
import software.amazon.jdbc.PropertyDefinition;
5150
import software.amazon.jdbc.hostavailability.HostAvailability;
5251
import software.amazon.jdbc.util.CacheMap;
52+
import software.amazon.jdbc.util.ExecutorFactory;
5353
import software.amazon.jdbc.util.Messages;
5454
import software.amazon.jdbc.util.PropertyUtils;
5555
import software.amazon.jdbc.util.RdsUtils;
@@ -109,14 +109,8 @@ public class ClusterTopologyMonitorImpl implements ClusterTopologyMonitor {
109109
protected final AtomicReference<List<HostSpec>> nodeThreadsLatestTopology = new AtomicReference<>(null);
110110

111111

112-
protected final ExecutorService monitorExecutor = Executors.newSingleThreadExecutor(runnableTarget -> {
113-
final Thread monitoringThread = new Thread(runnableTarget);
114-
monitoringThread.setDaemon(true);
115-
if (!StringUtils.isNullOrEmpty(monitoringThread.getName())) {
116-
monitoringThread.setName(monitoringThread.getName() + "-m");
117-
}
118-
return monitoringThread;
119-
});
112+
protected final ExecutorService monitorExecutor =
113+
ExecutorFactory.newSingleThreadExecutor("monitor");
120114

121115
public ClusterTopologyMonitorImpl(
122116
final String clusterId,
@@ -473,14 +467,7 @@ protected void shutdownNodeExecutorService() {
473467
protected void createNodeExecutorService() {
474468
this.nodeExecutorLock.lock();
475469
try {
476-
this.nodeExecutorService = Executors.newCachedThreadPool(runnableTarget -> {
477-
final Thread monitoringThread = new Thread(runnableTarget);
478-
monitoringThread.setDaemon(true);
479-
if (!StringUtils.isNullOrEmpty(monitoringThread.getName())) {
480-
monitoringThread.setName(monitoringThread.getName() + "-nm");
481-
}
482-
return monitoringThread;
483-
});
470+
this.nodeExecutorService = ExecutorFactory.newCachedThreadPool("node");
484471
} finally {
485472
this.nodeExecutorLock.unlock();
486473
}

wrapper/src/main/java/software/amazon/jdbc/plugin/OpenedConnectionTracker.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import java.util.concurrent.ConcurrentLinkedQueue;
3030
import java.util.concurrent.Executor;
3131
import java.util.concurrent.ExecutorService;
32-
import java.util.concurrent.Executors;
3332
import java.util.concurrent.TimeUnit;
3433
import java.util.logging.Logger;
3534
import software.amazon.jdbc.HostSpec;
3635
import software.amazon.jdbc.PluginService;
36+
import software.amazon.jdbc.util.ExecutorFactory;
3737
import software.amazon.jdbc.util.Messages;
3838
import software.amazon.jdbc.util.RdsUtils;
3939
import software.amazon.jdbc.util.StringUtils;
@@ -47,20 +47,9 @@ public class OpenedConnectionTracker {
4747
static final Map<String, Queue<WeakReference<Connection>>> openedConnections = new ConcurrentHashMap<>();
4848
private static final String TELEMETRY_INVALIDATE_CONNECTIONS = "invalidate connections";
4949
private static final ExecutorService pruneConnectionsExecutorService =
50-
Executors.newSingleThreadExecutor(
51-
r -> {
52-
final Thread thread = new Thread(r);
53-
thread.setDaemon(true);
54-
return thread;
55-
});
56-
50+
ExecutorFactory.newSingleThreadExecutor("pruneConnection");
5751
private static final ExecutorService invalidateConnectionsExecutorService =
58-
Executors.newCachedThreadPool(
59-
r -> {
60-
final Thread invalidateThread = new Thread(r);
61-
invalidateThread.setDaemon(true);
62-
return invalidateThread;
63-
});
52+
ExecutorFactory.newCachedThreadPool("invalidateConnection");
6453
private static final Executor abortConnectionExecutor = new SynchronousExecutor();
6554

6655
private static final Logger LOGGER = Logger.getLogger(OpenedConnectionTracker.class.getName());

wrapper/src/main/java/software/amazon/jdbc/plugin/customendpoint/CustomEndpointMonitorImpl.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import java.util.List;
2222
import java.util.concurrent.ExecutorService;
23-
import java.util.concurrent.Executors;
2423
import java.util.concurrent.TimeUnit;
2524
import java.util.concurrent.atomic.AtomicBoolean;
2625
import java.util.function.BiFunction;
@@ -36,8 +35,8 @@
3635
import software.amazon.jdbc.HostSpec;
3736
import software.amazon.jdbc.PluginService;
3837
import software.amazon.jdbc.util.CacheMap;
38+
import software.amazon.jdbc.util.ExecutorFactory;
3939
import software.amazon.jdbc.util.Messages;
40-
import software.amazon.jdbc.util.StringUtils;
4140
import software.amazon.jdbc.util.telemetry.TelemetryCounter;
4241
import software.amazon.jdbc.util.telemetry.TelemetryFactory;
4342

@@ -61,14 +60,8 @@ public class CustomEndpointMonitorImpl implements CustomEndpointMonitor {
6160
protected final long refreshRateNano;
6261

6362
protected final PluginService pluginService;
64-
protected final ExecutorService monitorExecutor = Executors.newSingleThreadExecutor(runnableTarget -> {
65-
final Thread monitoringThread = new Thread(runnableTarget);
66-
monitoringThread.setDaemon(true);
67-
if (!StringUtils.isNullOrEmpty(monitoringThread.getName())) {
68-
monitoringThread.setName(monitoringThread.getName() + "-cem");
69-
}
70-
return monitoringThread;
71-
});
63+
protected final ExecutorService monitorExecutor =
64+
ExecutorFactory.newSingleThreadExecutor("monitor");
7265

7366
private final TelemetryCounter infoChangedCounter;
7467

wrapper/src/main/java/software/amazon/jdbc/plugin/efm/MonitorConnectionContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
import java.sql.Connection;
2020
import java.sql.SQLException;
2121
import java.util.concurrent.Executor;
22-
import java.util.concurrent.Executors;
2322
import java.util.concurrent.TimeUnit;
2423
import java.util.concurrent.locks.ReentrantLock;
2524
import java.util.logging.Logger;
25+
import software.amazon.jdbc.util.ExecutorFactory;
2626
import software.amazon.jdbc.util.Messages;
2727
import software.amazon.jdbc.util.telemetry.TelemetryCounter;
2828

@@ -33,7 +33,8 @@
3333
public class MonitorConnectionContext {
3434

3535
private static final Logger LOGGER = Logger.getLogger(MonitorConnectionContext.class.getName());
36-
private static final Executor ABORT_EXECUTOR = Executors.newSingleThreadExecutor();
36+
private static final Executor ABORT_EXECUTOR =
37+
ExecutorFactory.newSingleThreadExecutor("abort");
3738

3839
private final TelemetryCounter abortedConnectionsCounter;
3940

wrapper/src/main/java/software/amazon/jdbc/plugin/efm/MonitorServiceImpl.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
import java.util.Collections;
2222
import java.util.Properties;
2323
import java.util.Set;
24-
import java.util.concurrent.Executors;
2524
import java.util.logging.Logger;
2625
import org.checkerframework.checker.nullness.qual.NonNull;
2726
import software.amazon.jdbc.AwsWrapperProperty;
2827
import software.amazon.jdbc.HostSpec;
2928
import software.amazon.jdbc.PluginService;
29+
import software.amazon.jdbc.util.ExecutorFactory;
3030
import software.amazon.jdbc.util.Messages;
3131
import software.amazon.jdbc.util.telemetry.TelemetryCounter;
3232
import software.amazon.jdbc.util.telemetry.TelemetryFactory;
@@ -65,12 +65,7 @@ public MonitorServiceImpl(final @NonNull PluginService pluginService) {
6565
MONITOR_DISPOSAL_TIME_MS.getLong(properties),
6666
monitorService),
6767
() ->
68-
Executors.newCachedThreadPool(
69-
r -> {
70-
final Thread monitoringThread = new Thread(r);
71-
monitoringThread.setDaemon(true);
72-
return monitoringThread;
73-
}));
68+
ExecutorFactory.newCachedThreadPool("monitor"));
7469
}
7570

7671
MonitorServiceImpl(

wrapper/src/main/java/software/amazon/jdbc/plugin/efm2/MonitorImpl.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.concurrent.ConcurrentLinkedQueue;
2929
import java.util.concurrent.Executor;
3030
import java.util.concurrent.ExecutorService;
31-
import java.util.concurrent.Executors;
3231
import java.util.concurrent.TimeUnit;
3332
import java.util.concurrent.atomic.AtomicBoolean;
3433
import java.util.logging.Level;
@@ -37,6 +36,7 @@
3736
import software.amazon.jdbc.HostSpec;
3837
import software.amazon.jdbc.PluginService;
3938
import software.amazon.jdbc.hostavailability.HostAvailability;
39+
import software.amazon.jdbc.util.ExecutorFactory;
4040
import software.amazon.jdbc.util.Messages;
4141
import software.amazon.jdbc.util.PropertyUtils;
4242
import software.amazon.jdbc.util.StringUtils;
@@ -56,7 +56,8 @@ public class MonitorImpl implements Monitor {
5656
private static final long THREAD_SLEEP_NANO = TimeUnit.MILLISECONDS.toNanos(100);
5757
private static final String MONITORING_PROPERTY_PREFIX = "monitoring-";
5858

59-
protected static final Executor ABORT_EXECUTOR = Executors.newSingleThreadExecutor();
59+
protected static final Executor ABORT_EXECUTOR =
60+
ExecutorFactory.newSingleThreadExecutor("abort");
6061

6162
private final Queue<WeakReference<MonitorConnectionContext>> activeContexts = new ConcurrentLinkedQueue<>();
6263
private final Map<Long, Queue<WeakReference<MonitorConnectionContext>>> newContexts =
@@ -67,11 +68,8 @@ public class MonitorImpl implements Monitor {
6768
private final HostSpec hostSpec;
6869
private final AtomicBoolean stopped = new AtomicBoolean(false);
6970
private Connection monitoringConn = null;
70-
private final ExecutorService threadPool = Executors.newFixedThreadPool(2, runnableTarget -> {
71-
final Thread monitoringThread = new Thread(runnableTarget);
72-
monitoringThread.setDaemon(true);
73-
return monitoringThread;
74-
});
71+
private final ExecutorService threadPool =
72+
ExecutorFactory.newFixedThreadPool(2, "threadPool");
7573

7674
private final long failureDetectionTimeNano;
7775
private final long failureDetectionIntervalNano;

wrapper/src/main/java/software/amazon/jdbc/plugin/efm2/MonitorServiceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import java.sql.SQLException;
2121
import java.util.Properties;
2222
import java.util.concurrent.Executor;
23-
import java.util.concurrent.Executors;
2423
import java.util.concurrent.TimeUnit;
2524
import java.util.logging.Logger;
2625
import org.checkerframework.checker.nullness.qual.NonNull;
2726
import software.amazon.jdbc.AwsWrapperProperty;
2827
import software.amazon.jdbc.HostSpec;
2928
import software.amazon.jdbc.PluginService;
29+
import software.amazon.jdbc.util.ExecutorFactory;
3030
import software.amazon.jdbc.util.Messages;
3131
import software.amazon.jdbc.util.SlidingExpirationCacheWithCleanupThread;
3232
import software.amazon.jdbc.util.telemetry.TelemetryCounter;
@@ -47,7 +47,8 @@ public class MonitorServiceImpl implements MonitorService {
4747

4848
protected static final long CACHE_CLEANUP_NANO = TimeUnit.MINUTES.toNanos(1);
4949

50-
protected static final Executor ABORT_EXECUTOR = Executors.newSingleThreadExecutor();
50+
protected static final Executor ABORT_EXECUTOR =
51+
ExecutorFactory.newSingleThreadExecutor("abort");
5152

5253
protected static final SlidingExpirationCacheWithCleanupThread<String, Monitor> monitors =
5354
new SlidingExpirationCacheWithCleanupThread<>(

wrapper/src/main/java/software/amazon/jdbc/plugin/failover/ClusterAwareReaderFailoverHandler.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.concurrent.ExecutionException;
2828
import java.util.concurrent.ExecutorCompletionService;
2929
import java.util.concurrent.ExecutorService;
30-
import java.util.concurrent.Executors;
3130
import java.util.concurrent.Future;
3231
import java.util.concurrent.TimeUnit;
3332
import java.util.concurrent.TimeoutException;
@@ -36,6 +35,7 @@
3635
import software.amazon.jdbc.HostSpec;
3736
import software.amazon.jdbc.PluginService;
3837
import software.amazon.jdbc.hostavailability.HostAvailability;
38+
import software.amazon.jdbc.util.ExecutorFactory;
3939
import software.amazon.jdbc.util.Messages;
4040
import software.amazon.jdbc.util.PropertyUtils;
4141
import software.amazon.jdbc.util.Utils;
@@ -131,7 +131,8 @@ public ReaderFailoverResult failover(final List<HostSpec> hosts, final HostSpec
131131
return FAILED_READER_FAILOVER_RESULT;
132132
}
133133

134-
final ExecutorService executor = Executors.newSingleThreadExecutor();
134+
final ExecutorService executor =
135+
ExecutorFactory.newSingleThreadExecutor("failover");
135136
final Future<ReaderFailoverResult> future = submitInternalFailoverTask(hosts, currentHost, executor);
136137
return getInternalFailoverResult(executor, future);
137138
}
@@ -287,7 +288,8 @@ public List<HostSpec> getReaderHostsByPriority(final List<HostSpec> hosts) {
287288

288289
private ReaderFailoverResult getConnectionFromHostGroup(final List<HostSpec> hosts)
289290
throws SQLException {
290-
final ExecutorService executor = Executors.newFixedThreadPool(2);
291+
final ExecutorService executor =
292+
ExecutorFactory.newFixedThreadPool(2, "failover");
291293
final CompletionService<ReaderFailoverResult> completionService = new ExecutorCompletionService<>(executor);
292294

293295
try {

wrapper/src/main/java/software/amazon/jdbc/plugin/failover/ClusterAwareWriterFailoverHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.util.concurrent.ExecutionException;
2727
import java.util.concurrent.ExecutorCompletionService;
2828
import java.util.concurrent.ExecutorService;
29-
import java.util.concurrent.Executors;
3029
import java.util.concurrent.Future;
3130
import java.util.concurrent.TimeUnit;
3231
import java.util.logging.Level;
@@ -35,6 +34,7 @@
3534
import software.amazon.jdbc.HostSpec;
3635
import software.amazon.jdbc.PluginService;
3736
import software.amazon.jdbc.hostavailability.HostAvailability;
37+
import software.amazon.jdbc.util.ExecutorFactory;
3838
import software.amazon.jdbc.util.Messages;
3939
import software.amazon.jdbc.util.PropertyUtils;
4040
import software.amazon.jdbc.util.Utils;
@@ -102,7 +102,8 @@ public WriterFailoverResult failover(final List<HostSpec> currentTopology)
102102
final boolean singleTask =
103103
this.pluginService.getDialect().getFailoverRestrictions().contains(FailoverRestriction.DISABLE_TASK_A);
104104

105-
final ExecutorService executorService = Executors.newFixedThreadPool(2);
105+
final ExecutorService executorService =
106+
ExecutorFactory.newFixedThreadPool(2, "failover");
106107
final CompletionService<WriterFailoverResult> completionService = new ExecutorCompletionService<>(executorService);
107108
submitTasks(currentTopology, executorService, completionService, singleTask);
108109

wrapper/src/main/java/software/amazon/jdbc/plugin/limitless/LimitlessRouterMonitor.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@
2121
import java.util.List;
2222
import java.util.Properties;
2323
import java.util.concurrent.ExecutorService;
24-
import java.util.concurrent.Executors;
2524
import java.util.concurrent.TimeUnit;
2625
import java.util.concurrent.atomic.AtomicBoolean;
2726
import java.util.logging.Level;
2827
import java.util.logging.Logger;
2928
import org.checkerframework.checker.nullness.qual.NonNull;
3029
import software.amazon.jdbc.HostSpec;
3130
import software.amazon.jdbc.PluginService;
31+
import software.amazon.jdbc.util.ExecutorFactory;
3232
import software.amazon.jdbc.util.Messages;
3333
import software.amazon.jdbc.util.PropertyUtils;
3434
import software.amazon.jdbc.util.SlidingExpirationCacheWithCleanupThread;
@@ -53,11 +53,7 @@ public class LimitlessRouterMonitor implements AutoCloseable, Runnable {
5353
protected final TelemetryFactory telemetryFactory;
5454
protected Connection monitoringConn = null;
5555

56-
private final ExecutorService threadPool = Executors.newFixedThreadPool(1, runnableTarget -> {
57-
final Thread monitoringThread = new Thread(runnableTarget);
58-
monitoringThread.setDaemon(true);
59-
return monitoringThread;
60-
});
56+
private final ExecutorService threadPool = ExecutorFactory.newFixedThreadPool(1, "threadPool");
6157

6258
private final AtomicBoolean stopped = new AtomicBoolean(false);
6359

0 commit comments

Comments
 (0)