If I understand correctly, you're using the NativeFSLockFactory and that's the expected behavior -- unlike SimpleFSLockFactory, if you terminate the JVM and then restart the program, the lock is not held anymore -- that's the advantage of using native-fs-lock because nobody really holds the lock anymore (the previous JVM died !). SimpleFSLock gives you a headache in that regard.
Can this explain what you observe? Shai On Mon, May 7, 2012 at 2:19 PM, S Eslamian <seslam...@gmail.com> wrote: > hmm... , What is a leftover lock file? > > You know I debug my code, befor index folder has lock file, till line 7. > Then I close the program, like in a real run an interrupt has happened. > Next I debug the program again with that index folder which has the lock > file and it shouldn't passes the if clause. But it passes. > > This is my sample code: > > 1.try{ > 2. if(!(IndexWriter.isLock(NIOFSDirectory.open("dstAddr")))){ > 3. IndexReader ir = > IndexReader.open(NIOFSDirectory.open("srcAddr"),true); > 4. IndexWriterConfig iwc = new > IndexWriterConfig(Version.LUCENE_CURRENT, new SimpleAnalyzer()); > 5. IndexWriter iw = new > IndexWriter(NIOFSDirectory.open("dstAddr"),iwc); > 6. > 7. iw.addIndexes(ir); > 8. iw.close(); > 9. } > 10.} catch(CorruptIndexException e){ > 11. //TODO > 12.} catch(LockObtainFailedException e){ > 13. //TODO > 14.} catch(IOException e){ > 15. //TODO > 16.} > > > On Mon, May 7, 2012 at 3:24 PM, Michael McCandless < > luc...@mikemccandless.com> wrote: > > > My guess is you had a leftover lock file. With NativeFSLockFactory > > (used by NIOFSDirectory), the presence of a lock file does not mean > > the lock is held (unlike the older SimpleFSLockFactory). > > > > The code that checks if the lock is held simply acquires and then > > releases the lock. So if you had a leftover (but unlocked) lock file, > > then the acquire succeeds, and on release the file is removed ... > > > > If it's not a leftover lock file ... can you make a quick code > > fragment showing the problem? > > > > Mike McCandless > > > > http://blog.mikemccandless.com > > > > On Mon, May 7, 2012 at 12:27 AM, S Eslamian <seslam...@gmail.com> wrote: > > > Yes, I'm sure. I debug the code, and look at the files in the index > > folder, > > > it has a write.lock file before this line of code: > > > if (!(IndexWriter.isLock(NIOFSDirectory.open("fileAddr")))){ > > > //do something > > > } > > > > > > and after passing this line, index folder does not contain write.lock > > file > > > and code goes to the if loop while it shouldn't passes the if clause! > > > > > > S Eslamian > > > > > > On Sun, May 6, 2012 at 5:56 PM, Michael McCandless < > > > luc...@mikemccandless.com> wrote: > > > > > >> Hmm, not good. Are you sure the index was previously locked? > > >> > > >> Can you describe your environment? Which OS / Directory class are you > > >> using? > > >> > > >> Maybe boil down to a small code fragment showing the issue? > > >> > > >> Mike McCandless > > >> > > >> http://blog.mikemccandless.com > > >> > > >> On Sun, May 6, 2012 at 8:29 AM, S Eslamian <seslam...@gmail.com> > wrote: > > >> > Hi all > > >> > While I am using IndexWriter.isLock(), this method unlocks the index > > and > > >> > returns false. > > >> > Can anyone tell me why? > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > >> For additional commands, e-mail: java-user-h...@lucene.apache.org > > >> > > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > > >