Solr hangs (often throwing java.lang.OutOfMemoryError: PermGen space) when
indexing many different field names
--------------------------------------------------------------------------------------------------------------
Key: SOLR-1623
URL: https://issues.apache.org/jira/browse/SOLR-1623
Project: Solr
Issue Type: Bug
Components: update
Affects Versions: 1.4, 1.3
Environment: Tomcat Version JVM Version
JVM Vendor OS Name OS Version OS Architecture
Apache Tomcat/6.0 snapshot 1.6.0_13-b03 Sun Microsystems Inc. Linux
2.6.18-164.el5 amd64
and/or
Tomcat Version JVM Version JVM Vendor
OS Name OS Version OS Architecture
Apache Tomcat/6.0.18 1.6.0_12-b04 Sun Microsystems Inc. Windows
2003 5.2 amd64
Reporter: Laurent Chavet
Priority: Critical
With the following fields in schema.xml:
<fields>
<field name="id" type="sint" indexed="true" stored="true" required="true" />
<dynamicField name="weight_*" type="sint" indexed="true"
stored="true"/>
</fields>
Run the following code:
import java.util.ArrayList;
import java.util.List;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
public static void main(String[] args) throws Exception {
SolrServer server;
try {
server = new CommonsHttpSolrServer(args[0]);
} catch (Exception e) {
System.err.println("can't creater server using: " + args[0] + " "
+ e.getMessage());
throw e;
}
for (int i = 0; i < 1000; i++) {
List<SolrInputDocument> batchedDocs = new
ArrayList<SolrInputDocument>();
for (int j = 0; j < 1000; j++) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", i * 1000 + j);
// hangs after 30 to 50 batches
doc.addField("weight_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+ Integer.toString(i) + "_" + Integer.toString(j), i * 1000 + j);
// hangs after about 200 batches
//doc.addField("weight_" + Integer.toString(i) + "_" +
Integer.toString(j), i * 1000 + j);
batchedDocs.add(doc);
}
try {
server.add(batchedDocs, true);
System.err.println("Done with batch=" + i);
// server.commit(); //doesn't change anything
} catch (Exception e) {
System.err.println("batchId=" + i + " bad batch: " +
e.getMessage());
throw e;
}
}
}
And soon the client (sometime throws) and solr will freeze. sometime you can
see: java.lang.OutOfMemoryError: PermGen space in the server logs
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.