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
>
>