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

Reply via email to