You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/04/17 10:57:54 UTC

svn commit: r765912 - in /lucene/solr/trunk/src: solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java

Author: shalin
Date: Fri Apr 17 08:57:53 2009
New Revision: 765912

URL: http://svn.apache.org/viewvc?rev=765912&view=rev
Log:
SOLR-844 followup -- Fix bug with incorrect alive count which makes LBHttpSolrServer assume that all servers are down even when one is running

Modified:
    lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java
    lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java

Modified: lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java?rev=765912&r1=765911&r2=765912&view=diff
==============================================================================
--- lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java (original)
+++ lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java Fri Apr 17 08:57:53 2009
@@ -190,6 +190,7 @@
     int count = counter.incrementAndGet();
     int attempts = 0;
     Exception ex;
+    int startSize = aliveServers.size();
     while (true) {
       int size = aliveServers.size();
       if (size < 1) throw new SolrServerException("No live SolrServers available to handle this request");
@@ -216,7 +217,7 @@
         throw new SolrServerException(e);
       }
       attempts++;
-      if (attempts >= aliveServers.size())
+      if (attempts >= startSize)
         throw new SolrServerException("No live SolrServers available to handle this request", ex);
     }
   }

Modified: lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java?rev=765912&r1=765911&r2=765912&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java Fri Apr 17 08:57:53 2009
@@ -18,6 +18,7 @@
 package org.apache.solr.client.solrj;
 
 import junit.framework.TestCase;
+import junit.framework.Assert;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -118,6 +119,28 @@
     assertEquals(3, names.size());
   }
 
+  public void testTwoServers() throws Exception {
+    LBHttpSolrServer lbHttpSolrServer = new LBHttpSolrServer(httpClient, solr[0].getUrl(), solr[1].getUrl());
+    lbHttpSolrServer.setAliveCheckInterval(1);
+    SolrQuery solrQuery = new SolrQuery("*:*");
+    Set<String> names = new HashSet<String>();
+    QueryResponse resp = null;
+    solr[0].jetty.stop();
+    solr[0].jetty = null;
+    resp = lbHttpSolrServer.query(solrQuery);
+    String name = resp.getResults().get(0).getFieldValue("name").toString();
+    Assert.assertEquals("solr1", name);
+    resp = lbHttpSolrServer.query(solrQuery);
+    name = resp.getResults().get(0).getFieldValue("name").toString();
+    Assert.assertEquals("solr1", name);
+    solr[1].jetty.stop();
+    solr[1].jetty = null;
+    solr[0].startJetty();
+    Thread.sleep(1200);
+    resp = lbHttpSolrServer.query(solrQuery);
+    name = resp.getResults().get(0).getFieldValue("name").toString();
+    Assert.assertEquals("solr0", name);
+  }
 
   private class SolrInstance extends AbstractSolrTestCase {