Yes... it appears to have disappeared. I was expecting that the Dispose method of a IDisposable would have been called anyway by the garbage collector when the app pool was recycled. I might add a finalizer just to play on the safe side :) Thx Simone
On Wed, Jan 6, 2010 at 4:59 PM, Franklin Simmons < [email protected]> wrote: > Simone, > > Are you still experiencing locks after adding the call to Dispose? I ask > because I see as part of your workaround that you are "explicitly disposing > the search engine in the Application_End event". This isn't so much a > workaround as a correction - it is correct to call Dispose directly. It > sounds like an expectation exists that the Dispose method would be invoked > otherwise? To my knowledge aside from using statements, the only other way > Dispose might be invoked implicitly is via a class finalizer. You should > consider adding a finalizer that invokes Dispose as a safeguard (not a > solution) to ensure Lucene resources are released. > > > -----Original Message----- > From: Simone Chiaretta [mailto:[email protected]] > Sent: Monday, January 04, 2010 7:02 PM > To: [email protected] > Subject: Re: "Lock obtain timed out: SimpleFSLock" appearing sometimes > > Thank you. > I'm not doing any optimize other then the one at startup and after adding a > new post. > And I'm 100% sure nobody added a post between startup and when, after a few > hours, the apppool was restarted. > Simo > > On Tue, Jan 5, 2010 at 12:03 AM, Franklin Simmons < > [email protected]> wrote: > > > Simone, > > > > Is it possible that an optimize is exceeding any of the application > pool's > > time out settings? Optimize can be a lengthy process (for large > indexes). > > I am not intimate with the behavior of IIS's process termination, but > > summarily killing a process in the midst of an optimize can be > problematic. > > > > > > -----Original Message----- > > From: Simone Chiaretta [mailto:[email protected]] > > Sent: Monday, January 04, 2010 4:17 PM > > To: lucene-net-user > > Subject: "Lock obtain timed out: SimpleFSLock" appearing sometimes > > > > Hi all, > > since it's my first time here I'd like to introduce myself. > > My name is Simone Chiaretta, and I'm member of Subtext blogging engine > > team, > > and I'm a ASP.NET MVC fan. > > I also have a blog at http://codeclimber.net.nz, where I also wrote a > few > > posts about Lucene.net > > > > But going back to the main topic of this email: I'm implementing a > > Lucene.net based search engine for Subtext and I'm writing because I've a > > strange problem that happens from times to times: > > I get the exception of the subject "Lock obtain timed out: > SimpleFSLock..." > > every now and then when the ApplicationPool recycles. > > > > I know only one IndexWriter can exist at a time, and in fact the writer > is > > a > > static variable inside the search engine service. > > > > The problem seems that the Dispose of the search engine, which closes the > > writer is not enough for releasing the lock. > > > > public void Dispose() > > { > > var searcher = _searcher; > > if (searcher != null) > > { > > searcher.Close(); > > } > > > > var writer = _writer; > > if (writer != null) > > { > > writer.Close(); > > } > > > > var directory = _directory; > > if(directory != null) { > > directory.Close(); > > } > > > > writer = _writer; > > if (writer != null) > > { > > _writer = null; > > } > > } > > > > For the moment I made 2 workaround that I hope will solve the problem: > > > > I'm checking weather the index is locked or not before creating a new one > > > > if(_writer==null) > > { > > if(IndexReader.IsLocked(_directory)) > > { > > __log.Error("Something left a lock in the index folder: deleting > > it"); > > IndexReader.Unlock(_directory); > > __log.Info("Lock Deleted... can proceed"); > > } > > _writer = new IndexWriter(_directory, _analyzer); > > _writer.Optimize(); > > } > > > > and I'm explicitly disposing the search engine in the Application_End > event > > of the WebApplication > > > > searchEngine.Dispose(); > > > > But I'd like to know if maybe I'm making some mistake somewhere that is > > causing the problem, or if there is a more elegant way to fix this > problem. > > > > For a complete reference here is the link to the latest version of the > > SearchEngineService class that encapsulate all the fulltext searching > logic > > of Subtext > > > > > http://code.google.com/p/subtext/source/browse/trunk/src/Subtext.Framework/Services/SearchEngine/SearchEngineService.cs > > > > Oh... one last thing.. I'm using Lucene.net 2.3.2 > > > > Thank you > > Simone > > > > > > -- > > Simone Chiaretta > > Microsoft MVP ASP.NET - ASPInsider > > Blog: http://codeclimber.net.nz > > RSS: http://feeds2.feedburner.com/codeclimber > > twitter: @simonech > > > > Any sufficiently advanced technology is indistinguishable from magic > > "Life is short, play hard" > > > > > > -- > Simone Chiaretta > Microsoft MVP ASP.NET - ASPInsider > Blog: http://codeclimber.net.nz > RSS: http://feeds2.feedburner.com/codeclimber > twitter: @simonech > > Any sufficiently advanced technology is indistinguishable from magic > "Life is short, play hard" > -- Simone Chiaretta Microsoft MVP ASP.NET - ASPInsider Blog: http://codeclimber.net.nz RSS: http://feeds2.feedburner.com/codeclimber twitter: @simonech Any sufficiently advanced technology is indistinguishable from magic "Life is short, play hard"
