You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2010/10/16 19:06:31 UTC

svn commit: r1023329 - /lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java

Author: yonik
Date: Sat Oct 16 17:06:31 2010
New Revision: 1023329

URL: http://svn.apache.org/viewvc?rev=1023329&view=rev
Log:
SOLR-2010: fix resource leak in spellcheck collator

Modified:
    lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java?rev=1023329&r1=1023328&r2=1023329&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java Sat Oct 16 17:06:31 2010
@@ -29,6 +29,7 @@ import org.apache.solr.handler.component
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.SearchHandler;
+import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequestBase;
 import org.apache.solr.response.SolrQueryResponse;
 import org.mortbay.log.Log;
@@ -58,7 +59,7 @@ public class SpellCheckCollator {
       verifyCandidateWithQuery = false;
     }
     if (queryComponent == null && verifyCandidateWithQuery) {
-      LOG.warn("Could not find an instance of QueryComponent.  Disabling collation verification against the index.");
+      LOG.info("Could not find an instance of QueryComponent.  Disabling collation verification against the index.");
       maxTries = 1;
       verifyCandidateWithQuery = false;
     }
@@ -82,14 +83,12 @@ public class SpellCheckCollator {
         checkResponse.components = Arrays.asList(new SearchComponent[] { queryComponent });
 
         ModifiableSolrParams params = new ModifiableSolrParams(ultimateResponse.req.getParams());
-        params.remove(CommonParams.Q);
-        params.add(CommonParams.Q, collationQueryStr);
+        params.set(CommonParams.Q, collationQueryStr);
         params.remove(CommonParams.START);
-        params.remove(CommonParams.ROWS);
-        params.add(CommonParams.FL, "id");
-        params.add(CommonParams.ROWS, "0");
-        //Would rather have found a concrete class to use...
-        checkResponse.req = new SolrQueryRequestBase(ultimateResponse.req.getCore(), params) { };
+        params.set(CommonParams.FL, "id");
+        params.set(CommonParams.ROWS, "0");
+        // creating a request here... make sure to close it!
+        checkResponse.req = new LocalSolrQueryRequest(ultimateResponse.req.getCore(), params);
         checkResponse.rsp = new SolrQueryResponse();
 
         try {
@@ -98,6 +97,8 @@ public class SpellCheckCollator {
           hits = (Integer) checkResponse.rsp.getToLog().get("hits");
         } catch (Exception e) {
           Log.warn("Exception trying to re-query to check if a spell check possibility would return any hits.", e);
+        } finally {
+          checkResponse.req.close();  
         }
       }
       if (hits > 0 || !verifyCandidateWithQuery) {