Java 1.5 has thread-locking bugs. Switching to Java 1.6 may cure this problem.
On Thu, Jan 15, 2009 at 10:57 AM, Jerome L Quinn <jlqu...@us.ibm.com> wrote: > > Hi, all. > > I'm running solr 1.3 inside Tomcat 6.0.18. I'm running a modified query > parser, tokenizer, highlighter, and have a CustomScoreQuery for dates. > > After some amount of time, I see solr stop responding to update requests. > When crawling through the logs, I see the following pattern: > > Jan 12, 2009 7:27:42 PM org.apache.solr.update.DirectUpdateHandler2 commit > INFO: start commit(optimize=false,waitFlush=false,waitSearcher=true) > Jan 12, 2009 7:28:11 PM org.apache.solr.common.SolrException log > SEVERE: Error during auto-warming of > key:org.apache.solr.search.queryresult...@ce0f92b9 > :java.lang.OutOfMemoryError > at org.apache.lucene.index.TermBuffer.toTerm(TermBuffer.java:122) > at org.apache.lucene.index.SegmentTermEnum.term > (SegmentTermEnum.java:167) > at org.apache.lucene.index.SegmentMergeInfo.next > (SegmentMergeInfo.java:66) > at org.apache.lucene.index.MultiSegmentReader$MultiTermEnum.next > (MultiSegmentReader.java:492) > at org.apache.lucene.search.FieldCacheImpl$7.createValue > (FieldCacheImpl.java:267) > at org.apache.lucene.search.FieldCacheImpl$Cache.get > (FieldCacheImpl.java:72) > at org.apache.lucene.search.FieldCacheImpl.getInts > (FieldCacheImpl.java:245) > at org.apache.solr.search.function.IntFieldSource.getValues > (IntFieldSource.java:50) > at org.apache.solr.search.function.SimpleFloatFunction.getValues > (SimpleFloatFunction.java:41) > at org.apache.solr.search.function.BoostedQuery$CustomScorer.<init> > (BoostedQuery.java:111) > at org.apache.solr.search.function.BoostedQuery$CustomScorer.<init> > (BoostedQuery.java:97) > at org.apache.solr.search.function.BoostedQuery > $BoostedWeight.scorer(BoostedQuery.java:88) > at org.apache.lucene.search.IndexSearcher.search > (IndexSearcher.java:132) > at org.apache.lucene.search.Searcher.search(Searcher.java:126) > at org.apache.lucene.search.Searcher.search(Searcher.java:105) > at org.apache.solr.search.SolrIndexSearcher.getDocListNC > (SolrIndexSearcher.java:966) > at org.apache.solr.search.SolrIndexSearcher.getDocListC > (SolrIndexSearcher.java:838) > at org.apache.solr.search.SolrIndexSearcher.access$000 > (SolrIndexSearcher.java:56) > at org.apache.solr.search.SolrIndexSearcher$2.regenerateItem > (SolrIndexSearcher.java:260) > at org.apache.solr.search.LRUCache.warm(LRUCache.java:194) > at org.apache.solr.search.SolrIndexSearcher.warm > (SolrIndexSearcher.java:1518) > at org.apache.solr.core.SolrCore$3.call(SolrCore.java:1018) > at java.util.concurrent.FutureTask$Sync.innerRun > (FutureTask.java:314) > at java.util.concurrent.FutureTask.run(FutureTask.java:149) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask > (ThreadPoolExecutor.java:896) > at java.util.concurrent.ThreadPoolExecutor$Worker.run > (ThreadPoolExecutor.java:918) > at java.lang.Thread.run(Thread.java:735) > > Jan 12, 2009 7:28:11 PM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run > SEVERE: Socket accept failed > Throwable occurred: java.lang.OutOfMemoryError > at java.net.PlainSocketImpl.socketAccept(Native Method) > at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:414) > at java.net.ServerSocket.implAccept(ServerSocket.java:464) > at java.net.ServerSocket.accept(ServerSocket.java:432) > at > org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket > (DefaultServerSocketFactory.java:61) > at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run > (JIoEndpoint.java:310) > at java.lang.Thread.run(Thread.java:735) > > <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> > << Java dumps core and heap at this point >> > <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> > > Jan 12, 2009 7:28:21 PM org.apache.solr.common.SolrException log > SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain > timed out: SingleInstanceLock: write.lock > at org.apache.lucene.store.Lock.obtain(Lock.java:85) > at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1140) > at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:938) > at org.apache.solr.update.SolrIndexWriter.<init> > (SolrIndexWriter.java:116) > at org.apache.solr.update.UpdateHandler.createMainIndexWriter > (UpdateHandler.java:122) > at org.apache.solr.update.DirectUpdateHandler2.openWriter > (DirectUpdateHandler2.java:167) > at org.apache.solr.update.DirectUpdateHandler2.addDoc > (DirectUpdateHandler2.java:221) > at org.apache.solr.update.processor.RunUpdateProcessor.processAdd > (RunUpdateProcessorFactory.java:59) > at org.apache.solr.handler.XmlUpdateRequestHandler.processUpdate > (XmlUpdateRequestHandler.java:196) > at > org.apache.solr.handler.XmlUpdateRequestHandler.handleRequestBody > (XmlUpdateRequestHandler.java:123) > at org.apache.solr.handler.RequestHandlerBase.handleRequest > (RequestHandlerBase.java:131) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:1204) > at org.apache.solr.servlet.SolrDispatchFilter.execute > (SolrDispatchFilter.java:303) > at org.apache.solr.servlet.SolrDispatchFilter.doFilter > (SolrDispatchFilter.java:232) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter > (ApplicationFilterChain.java:235) > at org.apache.catalina.core.ApplicationFilterChain.doFilter > (ApplicationFilterChain.java:206) > at org.apache.catalina.core.StandardWrapperValve.invoke > (StandardWrapperValve.java:233) > at org.apache.catalina.core.StandardContextValve.invoke > (StandardContextValve.java:191) > at org.apache.catalina.core.StandardHostValve.invoke > (StandardHostValve.java:128) > at org.apache.catalina.valves.ErrorReportValve.invoke > (ErrorReportValve.java:102) > at org.apache.catalina.core.StandardEngineValve.invoke > (StandardEngineValve.java:109) > at org.apache.catalina.connector.CoyoteAdapter.service > (CoyoteAdapter.java:286) > at org.apache.coyote.http11.Http11Processor.process > (Http11Processor.java:845) > at org.apache.coyote.http11.Http11Protocol > $Http11ConnectionHandler.process(Http11Protocol.java:583) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run > (JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:735) > > > After this, all future updates cause the same write lock failure. > > I'm willing to believe my code is somehow causing Solr to run out of > memory, though I'd like to know if anyone sees the problem on vanilla Solr. > > An even bigger problem is the fact that once Solr is wedged, it stays that > way until a human notices and restarts things. The tomcat stays running > and there's no automatic detection that will either restart Solr, or > restart the Tomcat container. > > Any suggestions on either front? > > Thanks, > Jerry Quinn > >