Hi,
I sent this question to [email protected] and I think the good
one is [email protected], so I resend it. Sorry for this error.
We are experimenting an issue related to Zk Timeout
Stacktrace is :
ERROR 19 juin 2018 06:24:07,152 - h.concurrent.ConcurrentService:67 -
Erreur dans l'attente de la fin de l'exécution d'un thread
ERROR 19 juin 2018 06:24:07,152 - h.concurrent.ConcurrentService:68 -
org.apache.solr.common.SolrException:
java.util.concurrent.TimeoutException: Could not connect to ZooKeeper
xxx.xxx.xxx.xxx :2181 within 10000 ms
ERROR 19 juin 2018 06:24:07,152 - api.batch.Lanceur:98 -
org.apache.solr.common.SolrException:
java.util.concurrent.TimeoutException: Could not connect to ZooKeeper
xxx.xxx.xxx.xxx :2181 within 10000 ms
java.util.concurrent.ExecutionException:
org.apache.solr.common.SolrException:
java.util.concurrent.TimeoutException: Could not connect to ZooKeeper
xxx.xxx.xxx.xxx:2181 within 10000 ms
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
...
Caused by: org.apache.solr.common.SolrException:
java.util.concurrent.TimeoutException: Could not connect to ZooKeeper
xxx.xxx.xxx.xxx:2181 within 10000 ms
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:182)
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:116)
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:106)
at
org.apache.solr.common.cloud.ZkStateReader.<init>(ZkStateReader.java:226)
at
org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider.connect(ZkClientClusterStateProvider.java:121)
...
In solr.xml, we have :
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
In Solr.in.sh, we have :
#ZK_CLIENT_TIMEOUT="15000"
or
ZK_CLIENT_TIMEOUT="30000"
So zkClientTimeout should be 30000.
In source code of ZkClientClusterStateProvider.java, I see zkClientTimeout
is hardcoded to 10000 ! Is it normal that configuration is not used ?
lucene-solr/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkClientClusterStateProvider.java
int zkConnectTimeout = 10000;
int zkClientTimeout = 10000;
...
zk = new ZkStateReader(zkHost, zkClientTimeout, zkConnectTimeout);
Regards.
Dominique