Hi
Using Solr trunk with the replica feature, I see the below exception
repeatedly in the Solr log.
I have been looking into the code of RecoveryStrategy#commitOnLeader and
read the code as follows:
1. sends a commit request (with COMMIT_END_POINT=true) to the Solr
instance containing the leader of the slice
2. sends a commit request to the Solr instance containing the leader of
the slice
The first results in a commit on the shards in the single leader Solr
instance and the second results in a commit on the shards in the single
leader Solr plus on all other Solrs having slices or replica belonging
to the collection.
I would expect that the first request is the relevant (and enough to do
a recovery of the specific replica).
Am I reading the second request wrong or is it a bug?
The code I'm referring to is
UpdateRequest ureq = new UpdateRequest();
ureq.setParams(new ModifiableSolrParams());
ureq.getParams().set(DistributedUpdateProcessor.COMMIT_END_POINT,
true);
ureq.getParams().set(RecoveryStrategy.class.getName(), baseUrl);
1. ureq.setAction(AbstractUpdateRequest.ACTION.COMMIT, false,
true).process(
server);
2. server.commit();
Thanks in advance for any input.
Best regards Trym R. Møller
Apr 21, 2012 10:14:11 AM org.apache.solr.common.SolrException log
SEVERE: Error while trying to
recover:org.apache.solr.client.solrj.SolrServerException:
http://myIP:8983/solr/myShardId
at
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:493)
at
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:264)
at
org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:103)
at
org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:180)
at
org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:156)
at
org.apache.solr.cloud.RecoveryStrategy.commitOnLeader(RecoveryStrategy.java:170)
at
org.apache.solr.cloud.RecoveryStrategy.replicate(RecoveryStrategy.java:120)
at
org.apache.solr.cloud.RecoveryStrategy.doRecovery(RecoveryStrategy.java:341)
at
org.apache.solr.cloud.RecoveryStrategy.run(RecoveryStrategy.java:206)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at
org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at
org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at
org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
at
org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at
org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
at
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:440)
... 8 more