2525import org .elasticsearch .common .transport .TransportAddress ;
2626import org .elasticsearch .common .unit .TimeValue ;
2727import org .elasticsearch .common .util .concurrent .AbstractRunnable ;
28+ import org .elasticsearch .common .util .concurrent .EsExecutors ;
2829import org .elasticsearch .discovery .PeerFinder .ConfiguredHostsResolver ;
2930import org .elasticsearch .discovery .zen .UnicastHostsProvider ;
3031import org .elasticsearch .discovery .zen .UnicastZenPing ;
3334
3435import java .util .List ;
3536import java .util .concurrent .ExecutorService ;
37+ import java .util .concurrent .ThreadFactory ;
3638import java .util .concurrent .TimeUnit ;
3739import java .util .concurrent .atomic .AtomicBoolean ;
3840import java .util .function .Consumer ;
39- import java .util .function .Supplier ;
41+
42+ import static org .elasticsearch .discovery .zen .UnicastZenPing .DISCOVERY_ZEN_PING_UNICAST_CONCURRENT_CONNECTS_SETTING ;
4043
4144public class UnicastConfiguredHostsResolver extends AbstractLifecycleComponent implements ConfiguredHostsResolver {
4245
@@ -45,20 +48,21 @@ public class UnicastConfiguredHostsResolver extends AbstractLifecycleComponent i
4548 private final UnicastHostsProvider hostsProvider ;
4649 private final SetOnce <ExecutorService > executorService = new SetOnce <>();
4750 private final TimeValue resolveTimeout ;
48- private final Supplier <ExecutorService > executorServiceFactory ;
4951
50- public UnicastConfiguredHostsResolver (Settings settings , TransportService transportService , UnicastHostsProvider hostsProvider ,
51- Supplier <ExecutorService > executorServiceFactory ) {
52+ public UnicastConfiguredHostsResolver (Settings settings , TransportService transportService , UnicastHostsProvider hostsProvider ) {
5253 super (settings );
5354 this .transportService = transportService ;
5455 this .hostsProvider = hostsProvider ;
5556 resolveTimeout = UnicastZenPing .DISCOVERY_ZEN_PING_UNICAST_HOSTS_RESOLVE_TIMEOUT .get (settings );
56- this .executorServiceFactory = executorServiceFactory ;
5757 }
5858
5959 @ Override
6060 protected void doStart () {
61- executorService .set (executorServiceFactory .get ());
61+ final int concurrentConnects = DISCOVERY_ZEN_PING_UNICAST_CONCURRENT_CONNECTS_SETTING .get (settings );
62+ logger .debug ("using concurrent_connects [{}], resolve_timeout [{}]" , concurrentConnects , resolveTimeout );
63+ final ThreadFactory threadFactory = EsExecutors .daemonThreadFactory (settings , "[unicast_configured_hosts_resolver]" );
64+ executorService .set (EsExecutors .newScaling (nodeName () + "/" + "unicast_configured_hosts_resolver" ,
65+ 0 , concurrentConnects , 60 , TimeUnit .SECONDS , threadFactory , transportService .getThreadPool ().getThreadContext ()));
6266 }
6367
6468 @ Override
0 commit comments