Yonik, Thanks for your reply,
I originally had implemented it as you suggest, ie, opened the core in a static initialiser and never closed it, but my client hangs - AFTER receiving the response back from solr (and after response from my utility jar). I have now changed back to this approach, but... I have to put a "System.exit(0)" at the end of my client code so that it can terminate. Seems like there may be a thread still hanging around preventing my client from exiting. Could this be to do with the ExecutorService using the default thread factory which will create non-daemon threads ? My utility jar is a standalone java library (not a webservice). Many thanks, Karen On Friday 29 June 2007 15:00:49 Yonik Seeley wrote: > On 6/29/07, Karen Loughran <[EMAIL PROTECTED]> wrote: > > Hi all, > > > > I have downloaded the latest Solr and have created a solr utility jar > > based on EmbeddedSolr from the wiki, > > (http://wiki.apache.org/solr/SolJava). > > > > My jar has a search method which basically gets the solr core and > > calls "searchSolr" (identical to that in EmbeddedSolr) with the passed in > > string and closes the core before exiting the method. > > > > When I make two subsequent calls to my search method from a client > > program I get the following exception on the 2nd attempt: > > Yes, because the SolrCore (currently a static singleton) has been closed. > In your search method, don't call close() on the core... it should > hang around for the lifetime of your application. > > -Yonik > > > 29-Jun-2007 13:51:50 org.apache.solr.search.SolrIndexSearcher <init> > > INFO: Opening [EMAIL PROTECTED] main > > 29-Jun-2007 13:51:50 org.apache.solr.core.SolrException log > > SEVERE: java.util.concurrent.RejectedExecutionException > > at > > java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(Thr > >eadPoolExecutor.java:1759) at > > java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:76 > >7) at > > java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:6 > >58) at > > java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorServi > >ce.java:92) at > > java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors. > >java:603) at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:536) > > at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:324) at > > org.apache.solr.request.SolrQueryRequestBase.getSearcher(SolrQueryRequest > >Base.java:173) at > > org.apache.solr.request.StandardRequestHandler.handleRequestBody(Standard > >RequestHandler.java:114) at > > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBa > >se.java:77) at org.apache.solr.core.SolrCore.execute(SolrCore.java:658) > > at uk.ac.besc.prism.searcher.impl.SolrSearcher.searchSolr(Unknown > > Source) at uk.ac.besc.prism.searcher.impl.SolrSearcher.searchSolr(Unknown > > Source) at > > uk.ac.besc.prism.searcher.impl.SolrSearcher.searchStarts(Unknown Source) > > at > > uk.ac.besc.prism.searcher.client.TestSearchDirect.main(TestSearchDirect.j > >ava:47) > > > > > > By the way, EmbeddedSolr as provided works fine, no such exception. > > I also tried putting a sleep for 5 seconds in case the core had not > > properly closed before I tried opening it again (through the 2nd call to > > search). > > > > I noticed a discussion in February about the RejectedExecutionException, > > but its not clear to me whether there was a resolution to it ? > > http://www.mail-archive.com/[EMAIL PROTECTED]/msg02822.html > > > > Can anyone tell me what is causing this and how I can work around it ? > > > > Many thanks > > > > Karen Loughran