2828import java .util .Set ;
2929import java .util .concurrent .Executors ;
3030import java .util .concurrent .ScheduledExecutorService ;
31+ import java .util .concurrent .atomic .AtomicInteger ;
3132import java .util .function .Function ;
3233import java .util .function .Supplier ;
3334import 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