You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2012/06/06 17:15:14 UTC
svn commit: r1346934 -
/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
Author: markrmiller
Date: Wed Jun 6 15:15:14 2012
New Revision: 1346934
URL: http://svn.apache.org/viewvc?rev=1346934&view=rev
Log:
complete a simple TODO: but we really should only retry on connection errors...
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java?rev=1346934&r1=1346933&r2=1346934&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java Wed Jun 6 15:15:14 2012
@@ -355,12 +355,25 @@ public class SolrCmdDistributor {
// error during request
// if there is a retry url, we want to retry...
- // TODO: but we really should only retry on connection errors...
- if (sreq.retries < MAX_RETRIES_ON_FORWARD && sreq.node.checkRetry()) {
+ boolean isRetry = sreq.node.checkRetry();
+ boolean doRetry = false;
+ int rspCode = sreq.rspCode;
+
+ // this can happen in certain situations such as shutdown
+ if (isRetry && (rspCode == 404 || rspCode == 403 || rspCode == 503 || rspCode == 500)) {
+ doRetry = true;
+ }
+
+ // if its an ioexception, lets try again
+ if (isRetry && sreq.exception instanceof IOException) {
+ doRetry = true;
+ }
+
+ if (isRetry && sreq.retries < MAX_RETRIES_ON_FORWARD && doRetry) {
sreq.retries++;
sreq.rspCode = 0;
sreq.exception = null;
- SolrException.log(SolrCmdDistributor.log, "forwarding update to " + sreq.node.getUrl() + " failed - retrying ... ");
+ SolrException.log(SolrCmdDistributor.log, "forwarding update to " + sreq.node.getUrl() + " failed - retrying ... ", null);
Thread.sleep(500);
submit(sreq);
checkResponses(block);