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 2014/02/09 02:07:33 UTC

svn commit: r1566179 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java

Author: markrmiller
Date: Sun Feb  9 01:07:32 2014
New Revision: 1566179

URL: http://svn.apache.org/r1566179
Log:
SOLR-5700: Always consumes the response's HttpEntity and cleaned up the test a little.

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1566179&r1=1566178&r2=1566179&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sun Feb  9 01:07:32 2014
@@ -384,7 +384,7 @@ Other Changes
   (Markus Jelsma, Anshum Gupta via shalin)
 
 * SOLR-5700: Improve error handling of remote queries (proxied requests).
-  (Greg Chanan via Mark Miller)
+  (Greg Chanan, Steve Davids via Mark Miller)
 
 ==================  4.6.1  ==================
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1566179&r1=1566178&r2=1566179&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Sun Feb  9 01:07:32 2014
@@ -23,11 +23,11 @@ import org.apache.http.client.HttpClient
 import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpHead;
-import org.apache.http.client.methods.HttpOptions;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
 import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.util.EntityUtils;
 import org.apache.http.Header;
 import org.apache.http.HeaderIterator;
 import org.apache.http.HttpEntity;
@@ -99,7 +99,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.WeakHashMap;
 
 /**
  * This filter looks at the incoming URL maps them to handlers defined in solrconfig.xml
@@ -512,6 +511,7 @@ public class SolrDispatchFilter implemen
   private void remoteQuery(String coreUrl, HttpServletRequest req,
       SolrQueryRequest solrReq, HttpServletResponse resp) throws IOException {
     HttpRequestBase method = null;
+    HttpEntity httpEntity = null;
     boolean success = false;
     try {
       String urlstr = coreUrl;
@@ -553,7 +553,7 @@ public class SolrDispatchFilter implemen
 
       final HttpResponse response = httpClient.execute(method);
       int httpStatus = response.getStatusLine().getStatusCode();
-      HttpEntity httpEntity = response.getEntity();
+      httpEntity = response.getEntity();
 
       resp.setStatus(httpStatus);
       for (HeaderIterator responseHeaders = response.headerIterator(); responseHeaders.hasNext();) {
@@ -587,6 +587,7 @@ public class SolrDispatchFilter implemen
           SolrException.ErrorCode.SERVER_ERROR,
           "Error trying to proxy request for url: " + coreUrl, e));
     } finally {
+      EntityUtils.consumeQuietly(httpEntity);
       if (method != null && !success) {
         method.abort();
       }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java?rev=1566179&r1=1566178&r2=1566179&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RemoteQueryErrorTest.java Sun Feb  9 01:07:32 2014
@@ -21,43 +21,15 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.client.solrj.embedded.JettySolrRunner;
-import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-
 /**
  * Verify that remote (proxied) queries return proper error messages
  */
-
 @Slow
 public class RemoteQueryErrorTest extends AbstractFullDistribZkTestBase {
-  @BeforeClass
-  public static void beforeSuperClass() throws Exception {
-  }
-  
-  @AfterClass
-  public static void afterSuperClass() {
-    
-  }
-  
-  @Before
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-    System.setProperty("numShards", Integer.toString(sliceCount));
-  }
-  
-  @Override
-  @After
-  public void tearDown() throws Exception {
-    super.tearDown();
-    resetExceptionIgnores();
-  }
 
   public RemoteQueryErrorTest() {
     super();
@@ -83,16 +55,15 @@ public class RemoteQueryErrorTest extend
     checkForCollection("collection2", numShardsNumReplicaList, null);
     waitForRecoveriesToFinish("collection2", true);
 
-    HttpSolrServer solrServer = null;
-    for (JettySolrRunner jetty : jettys) {
-      int port = port = jetty.getLocalPort();
-      solrServer = new HttpSolrServer("http://127.0.0.1:" + port + context + "/collection2");
+    for (SolrServer solrServer : clients) {
       try {
         SolrInputDocument emptyDoc = new SolrInputDocument();
         solrServer.add(emptyDoc);
         fail("Expected unique key exceptoin");
-      } catch (Exception ex) {
-        assert(ex.getMessage().contains("Document is missing mandatory uniqueKey field: id"));
+      } catch (SolrException ex) {
+        assertEquals("Document is missing mandatory uniqueKey field: id", ex.getMessage());
+      } catch(Exception ex) {
+        fail("Expected a SolrException to occur, instead received: " + ex.getClass());
       } finally {
         solrServer.shutdown();
       }