it seems that close reader not release write lock, test lock release before you add document
2008/1/18, Kevin Dewi <[EMAIL PROTECTED]>: > > Hello, > > I have a problem with this code (updating a lucene index by delete and > adding documents): > > > IndexReader reader = IndexReader.open(directory); > while (i.hasNext()) { > reader.deleteDocuments(i.next()); > } > reader.close(); > > ... > > IndexWriter writer = new IndexWriter(directory, > new GermanAnalyzer(), create); > while (i2.hasNext()) { > writer.addDocument(i2.next()); > } > > By creating the IndexWriter I became this exception on Linux (ubuntu > dapper): > java.io.IOException: Lock obtain timed out: Lock@/home/picard/develop/ > apache-tomcat-6.0.14/temp/lucene-1763c549e0e952256392217dac3f3bdb- > write.lock > at org.apache.lucene.store.Lock.obtain(Lock.java:56) > at > org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:254) > at > org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:244) > at > de.gesichterparty.DatabaseManager.processQueue(DatabaseManager.java:345) > at de.gesichterparty.LuceneServlet.run(LuceneServlet.java:140) > at java.lang.Thread.run(Thread.java:595) > java.io.FileNotFoundException: /home/picard/develop/apache- > tomcat-6.0.14/webapps/Lucene/WEB-INF/databases/user/segments (No such > file or directory) > at java.io.RandomAccessFile.open(Native Method) > at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212) > at org.apache.lucene.store.FSIndexInput > $Descriptor.<init>(FSDirectory.java:430) > at > org.apache.lucene.store.FSIndexInput.<init>(FSDirectory.java:439) > at > org.apache.lucene.store.FSDirectory.openInput(FSDirectory.java:329) > at > org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:45) > at org.apache.lucene.index.IndexReader > $1.doBody(IndexReader.java:146) > at org.apache.lucene.store.Lock$With.run(Lock.java:99) > at org.apache.lucene.index.IndexReader.open(IndexReader.java: > 141) > at org.apache.lucene.index.IndexReader.open(IndexReader.java: > 136) > at > org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:47) > at > de.gesichterparty.DatabaseManager.processQueue(DatabaseManager.java:374) > at de.gesichterparty.LuceneServlet.run(LuceneServlet.java:140) > at java.lang.Thread.run(Thread.java:595) > > > On Mac OS X Leopard this code works fine. > > Thanks > Kevin > >