Skip to content

Commit a2ed497

Browse files
authored
fix(retry): make RetryLogic executor threads daemon (#1661)
This update makes sure `RetryLogic` executor threads are daemon.
1 parent c741d08 commit a2ed497

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.Set;
2929
import java.util.concurrent.Executors;
3030
import java.util.concurrent.ScheduledExecutorService;
31+
import java.util.concurrent.atomic.AtomicInteger;
3132
import java.util.function.Function;
3233
import java.util.function.Supplier;
3334
import java.util.stream.Collectors;
@@ -127,7 +128,7 @@ public final Driver newInstance(
127128
BoltConnectionProviderFactory boltConnectionProviderFactory) {
128129
requireNonNull(authTokenManager, "authTokenProvider must not be null");
129130

130-
var retryExecutor = eventLoopGroup != null ? eventLoopGroup : Executors.newSingleThreadScheduledExecutor();
131+
var retryExecutor = eventLoopGroup != null ? eventLoopGroup : retryScheduledExecutorService();
131132
@SuppressWarnings("deprecation")
132133
var retryLogic = createRetryLogic(config.maxTransactionRetryTimeMillis(), retryExecutor, config.logging());
133134

@@ -145,6 +146,17 @@ public final Driver newInstance(
145146
boltConnectionProviderFactory);
146147
}
147148

149+
@SuppressWarnings("deprecation")
150+
private static ScheduledExecutorService retryScheduledExecutorService() {
151+
var nextId = new AtomicInteger(1);
152+
return Executors.newSingleThreadScheduledExecutor(runnable -> {
153+
var thread = new Thread(runnable);
154+
thread.setName("neo4jdriverretry-" + nextId.getAndIncrement());
155+
thread.setDaemon(true);
156+
return thread;
157+
});
158+
}
159+
148160
@SuppressWarnings("deprecation")
149161
protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock clock) {
150162
var metricsAdapter = config.metricsAdapter();

0 commit comments

Comments
 (0)