On Fri, Jun 22, 2012 at 1:06 PM, tom <[email protected]> wrote: > ah thx and to answer ur question: > > no we are still on 3.5 and i had tested it on win7 (see the very end of > this email thread) > and after having briefly looked @ the 3.6 code the class has changed quite > a bit since 3.5... >
yeah that is right! I rewrote most of the parts in the suggest code I think this should be fine now. So you might want to upgrade to 3.6 to get this fixed. simon > > > On 22.06.2012 12:16, Simon Willnauer wrote: > > here is the issue https://issues.apache.org/jira/browse/SOLR-3570 > > On Fri, Jun 22, 2012 at 11:55 AM, Simon Willnauer < > [email protected]> wrote: > >> >> >> On Fri, Jun 22, 2012 at 11:47 AM, Simon Willnauer < >> [email protected]> wrote: >> >>> >>> >>> On Fri, Jun 22, 2012 at 10:37 AM, tom <[email protected]> wrote: >>> >>>> cross posting this issue to the dev list in the hope to get a response >>>> here... >>>> >>> >>> I think you are right. Closing the Stream / Reader is the >>> responsibility of the caller not the FileDictionary IMO but solr doesn't >>> close it so that might cause your problems. Are you running on windows by >>> any chance? >>> I will create an issue and fix it. >>> >> >> hmm I just looked at it and I see a IOUtils.close call in FileDictionary >> >> >> https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_3_6/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/suggest/FileDictionary.java >> >> are you using solr 3.6? >> >>> >>> simon >>> >>>> >>>> >>>> -------- Original Message -------- Subject: Re: >>>> suggester/autocomplete locks file preventing replication Date: Thu, >>>> 21 Jun 2012 17:11:40 +0200 From: tom >>>> <[email protected]><[email protected]> Reply-To: >>>> [email protected] To: [email protected] >>>> >>>> >>>> pocking into the code i think the FileDictionary class is the culprit: >>>> It takes an InputStream as a ctor argument but never releases the >>>> stream. what puzzles me is that the class seems to allow a one-time >>>> iteration and then the stream is useless, unless i'm missing smth. here. >>>> >>>> is there a good reason for this or rather a bug? >>>> should i move the topic to the dev list? >>>> >>>> >>>> On 21.06.2012 14:49, tom wrote: >>>> > BTW: a core unload doesnt release the lock either ;( >>>> > >>>> > >>>> > On 21.06.2012 14:39, tom wrote: >>>> >> hi, >>>> >> >>>> >> i'm using the suggester with a file like so: >>>> >> >>>> >> <searchComponent class="solr.SpellCheckComponent" name="suggest"> >>>> >> <lst name="spellchecker"> >>>> >> <str name="name">suggest</str> >>>> >> <str >>>> >> name="classname">org.apache.solr.spelling.suggest.Suggester</str> >>>> >> <str >>>> >> name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str> >>>> >> <!-- Alternatives to lookupImpl: >>>> >> org.apache.solr.spelling.suggest.fst.FSTLookup [finite state >>>> >> automaton] >>>> >> org.apache.solr.spelling.suggest.jaspell.JaspellLookup >>>> >> [default, jaspell-based] >>>> >> org.apache.solr.spelling.suggest.tst.TSTLookup [ternary trees] >>>> >> --> >>>> >> <!-- the indexed field to derive suggestions from --> >>>> >> <!-- TODO must change this to spell or smth alike later --> >>>> >> <str name="field">content</str> >>>> >> <float name="threshold">0.05</float> >>>> >> <str name="buildOnCommit">true</str> >>>> >> <str name="weightBuckets">100</str> >>>> >> <str name="sourceLocation">autocomplete.dictionary</str> >>>> >> </lst> >>>> >> </searchComponent> >>>> >> >>>> >> when trying to replicate i get the following error message on the >>>> >> slave side: >>>> >> >>>> >> 2012-06-21 14:34:50,781 ERROR >>>> >> [pool-3-thread-1 ] >>>> >> handler.ReplicationHandler - SnapPull failed >>>> >> org.apache.solr.common.SolrException: Unable to rename: <path> >>>> >> autocomplete.dictionary.20120620120611 >>>> >> at >>>> >> org.apache.solr.handler.SnapPuller.copyTmpConfFiles2Conf(SnapPuller.java:642) >>>> >> at >>>> >> org.apache.solr.handler.SnapPuller.downloadConfFiles(SnapPuller.java:526) >>>> >> at >>>> >> org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:299) >>>> >> at >>>> >> org.apache.solr.handler.ReplicationHandler.doFetch(ReplicationHandler.java:268) >>>> >> at org.apache.solr.handler.SnapPuller$1.run(SnapPuller.java:159) >>>> >> at >>>> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) >>>> >> at >>>> >> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) >>>> >> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) >>>> >> at >>>> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) >>>> >> at >>>> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) >>>> >> at >>>> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) >>>> >> at >>>> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) >>>> >> at >>>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) >>>> >> at java.lang.Thread.run(Thread.java:619) >>>> >> >>>> >> so i dug around it and found out that the solr's java process holds a >>>> >> lock on the autocomplete.dictionary file. any reason why this is so? >>>> >> >>>> >> thx, >>>> >> >>>> >> running: >>>> >> solr 3.5 >>>> >> win7 >>>> >> >>>> > >>>> > >>>> > >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >> > > >
