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 ho...@apache.org on 2007/02/26 20:42:22 UTC
svn commit: r511970 - in /lucene/solr/trunk: ./ example/exampledocs/
src/java/org/apache/solr/request/ src/webapp/src/org/apache/solr/servlet/
Author: hossman
Date: Mon Feb 26 11:42:21 2007
New Revision: 511970
URL: http://svn.apache.org/viewvc?view=rev&rev=511970
Log:
SOLR-173 - fix for 'too many open files' - close requests at end of SolrDispatchFilter, and only get Searcher in response writers if it's actually needed.
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/example/exampledocs/post.sh
lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java
lucene/solr/trunk/src/java/org/apache/solr/request/TextResponseWriter.java
lucene/solr/trunk/src/java/org/apache/solr/request/XMLWriter.java
lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java
Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Mon Feb 26 11:42:21 2007
@@ -167,6 +167,12 @@
attempt is made to use the solr.home dir.
(Ryan McKinley via hossman)
+ 6. SOLR-173: Bug fix to SolrDispatchFilter to reduce "too many open
+ files" problem was that SolrDispatchFilter was not closing requests
+ when finished. Also modified ResponseWriters to only fetch a Searcher
+ reference if necessary for writing out DocLists.
+ (Ryan McKinley via hossman)
+
Other Changes
1. Updated to Lucene 2.1
Modified: lucene/solr/trunk/example/exampledocs/post.sh
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/example/exampledocs/post.sh?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/example/exampledocs/post.sh (original)
+++ lucene/solr/trunk/example/exampledocs/post.sh Mon Feb 26 11:42:21 2007
@@ -24,5 +24,5 @@
done
#send the commit command to make sure all the changes are flushed and visible
-curl $URL --data-binary '<commit/>'
+curl $URL --data-binary '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
echo
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java Mon Feb 26 11:42:21 2007
@@ -23,6 +23,7 @@
import org.apache.solr.schema.TextField;
import org.apache.solr.search.DocIterator;
import org.apache.solr.search.DocList;
+import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.NamedList;
import org.apache.solr.util.SimpleOrderedMap;
@@ -427,6 +428,7 @@
incLevel();
boolean first=true;
+ SolrIndexSearcher searcher = req.getSearcher();
DocIterator iterator = ids.iterator();
for (int i=0; i<sz; i++) {
int id = iterator.nextDoc();
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/TextResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/TextResponseWriter.java?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/TextResponseWriter.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/TextResponseWriter.java Mon Feb 26 11:42:21 2007
@@ -39,7 +39,6 @@
protected final Writer writer;
protected final IndexSchema schema;
- protected final SolrIndexSearcher searcher;
protected final SolrQueryRequest req;
protected final SolrQueryResponse rsp;
@@ -53,7 +52,6 @@
public TextResponseWriter(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) {
this.writer = writer;
this.schema = req.getSchema();
- this.searcher = req.getSearcher();
this.req = req;
this.rsp = rsp;
String indent = req.getParam("indent");
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/XMLWriter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/XMLWriter.java?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/XMLWriter.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/XMLWriter.java Mon Feb 26 11:42:21 2007
@@ -82,7 +82,7 @@
// and to encapsulate writer, schema, and searcher so
// they don't have to be passed around in every function.
//
- XMLWriter xw = new XMLWriter(writer, req.getSchema(), req.getSearcher(), ver);
+ XMLWriter xw = new XMLWriter(writer, req.getSchema(), req, ver);
xw.defaultFieldList = rsp.getReturnFields();
String indent = req.getParam("indent");
@@ -135,7 +135,7 @@
private final Writer writer;
private final IndexSchema schema; // needed to write fields of docs
- private final SolrIndexSearcher searcher; // needed to retrieve docs
+ private final SolrQueryRequest request; // the request
private int level;
private boolean defaultIndent=false;
@@ -159,10 +159,11 @@
private final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
private final StringBuilder sb = new StringBuilder();
- public XMLWriter(Writer writer, IndexSchema schema, SolrIndexSearcher searcher, String version) {
+ public XMLWriter(Writer writer, IndexSchema schema, SolrQueryRequest req, String version) {
this.writer = writer;
this.schema = schema;
- this.searcher = searcher;
+ this.request = req;
+
float ver = version==null? CURRENT_VERSION : Float.parseFloat(version);
this.version = (int)(ver*1000);
}
@@ -357,6 +358,7 @@
}
incLevel();
+ SolrIndexSearcher searcher = request.getSearcher();
DocIterator iterator = ids.iterator();
for (int i=0; i<sz; i++) {
int id = iterator.nextDoc();
Modified: lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java?view=diff&rev=511970&r1=511969&r2=511970
==============================================================================
--- lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java Mon Feb 26 11:42:21 2007
@@ -74,6 +74,7 @@
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
if( request instanceof HttpServletRequest) {
+ SolrQueryRequest solrReq = null;
HttpServletRequest req = (HttpServletRequest)request;
try {
String path = req.getServletPath();
@@ -91,7 +92,6 @@
path = path.substring( 0, idx );
}
- SolrQueryRequest solrReq = null;
SolrRequestHandler handler = core.getRequestHandler( path );
if( handler == null && handleSelect ) {
if( "/select".equals( path ) || "/select/".equals( path ) ) {
@@ -125,6 +125,11 @@
catch( Throwable ex ) {
sendError( (HttpServletResponse)response, ex );
return;
+ }
+ finally {
+ if( solrReq != null ) {
+ solrReq.close();
+ }
}
}