diff --git a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java index d512b3e496..f0ade37812 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java +++ b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java @@ -28,6 +28,7 @@ import java.util.Set; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -127,7 +128,7 @@ public final Driver newInstance( BoltConnectionProviderFactory boltConnectionProviderFactory) { requireNonNull(authTokenManager, "authTokenProvider must not be null"); - var retryExecutor = eventLoopGroup != null ? eventLoopGroup : Executors.newSingleThreadScheduledExecutor(); + var retryExecutor = eventLoopGroup != null ? eventLoopGroup : retryScheduledExecutorService(); @SuppressWarnings("deprecation") var retryLogic = createRetryLogic(config.maxTransactionRetryTimeMillis(), retryExecutor, config.logging()); @@ -145,6 +146,17 @@ public final Driver newInstance( boltConnectionProviderFactory); } + @SuppressWarnings("deprecation") + private static ScheduledExecutorService retryScheduledExecutorService() { + var nextId = new AtomicInteger(1); + return Executors.newSingleThreadScheduledExecutor(runnable -> { + var thread = new Thread(runnable); + thread.setName("neo4jdriverretry-" + nextId.getAndIncrement()); + thread.setDaemon(true); + return thread; + }); + } + @SuppressWarnings("deprecation") protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock clock) { var metricsAdapter = config.metricsAdapter();