Hello!
I'm using JackRabbit 1.6.
My project works well when I save small documents into then repository. Last
time when I save a small TXT file after a 6M DOC file, I got the following
exceptions.
2010-1-9 18:20:05[ERROR](MultiIndex.java:1174) Unable to commit volatile
index
java.io.IOException
at
org.apache.jackrabbit.core.query.lucene.Util.createIOException(Util.java:114)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex.addDocuments(AbstractIndex.java:199)
at
org.apache.jackrabbit.core.query.lucene.VolatileIndex.commitPending(VolatileIndex.java:171)
at
org.apache.jackrabbit.core.query.lucene.VolatileIndex.commit(VolatileIndex.java:140)
at
org.apache.jackrabbit.core.query.lucene.PersistentIndex.copyIndex(PersistentIndex.java:105)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex$VolatileCommit.execute(MultiIndex.java:1984)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(MultiIndex.java:1000)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.commitVolatileIndex(MultiIndex.java:1048)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.flush(MultiIndex.java:893)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.checkFlush(MultiIndex.java:1164)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.access$100(MultiIndex.java:80)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex$1.run(MultiIndex.java:317)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: java.lang.NullPointerException
at
org.apache.jackrabbit.core.value.BLOBInTempFile.delete(BLOBInTempFile.java:110)
at
org.apache.jackrabbit.core.value.BLOBInTempFile.discard(BLOBInTempFile.java:120)
at
org.apache.jackrabbit.core.query.lucene.TextFilterExtractor$1.close(TextFilterExtractor.java:112)
at
org.apache.jackrabbit.core.query.lucene.TextExtractorJob.discard(TextExtractorJob.java:151)
at
org.apache.jackrabbit.core.query.lucene.TextExtractorReader.close(TextExtractorReader.java:90)
at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:142)
at
org.apache.jackrabbit.core.query.lucene.LazyTextExtractorField.stringValue(LazyTextExtractorField.java:98)
at
org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:109)
at
org.apache.lucene.index.DocFieldConsumersPerField.processFields(DocFieldConsumersPerField.java:36)
at
org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:234)
at
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:765)
at
org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:743)
at
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1917)
at
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1895)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex$1.call(AbstractIndex.java:183)
at
org.apache.jackrabbit.core.query.lucene.DynamicPooledExecutor.executeAndWait(DynamicPooledExecutor.java:96)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex.addDocuments(AbstractIndex.java:188)
... 12 more
2010-1-9 18:20:05[ WARN](LazyTextExtractorField.java:94) Exception reading
value for field: Stream closed
2010-1-9 18:20:05[ERROR](MultiIndex.java:1174) Unable to commit volatile
index
java.io.IOException
at
org.apache.jackrabbit.core.query.lucene.Util.createIOException(Util.java:114)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex.addDocuments(AbstractIndex.java:199)
at
org.apache.jackrabbit.core.query.lucene.VolatileIndex.commitPending(VolatileIndex.java:171)
at
org.apache.jackrabbit.core.query.lucene.VolatileIndex.commit(VolatileIndex.java:140)
at
org.apache.jackrabbit.core.query.lucene.PersistentIndex.copyIndex(PersistentIndex.java:105)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex$VolatileCommit.execute(MultiIndex.java:1984)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(MultiIndex.java:1000)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.commitVolatileIndex(MultiIndex.java:1048)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.flush(MultiIndex.java:893)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.checkFlush(MultiIndex.java:1164)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.access$100(MultiIndex.java:80)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex$1.run(MultiIndex.java:317)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: java.lang.NullPointerException
at
org.apache.jackrabbit.core.value.BLOBInTempFile.delete(BLOBInTempFile.java:110)
at
org.apache.jackrabbit.core.value.BLOBInTempFile.discard(BLOBInTempFile.java:120)
at
org.apache.jackrabbit.core.query.lucene.TextFilterExtractor$1.close(TextFilterExtractor.java:112)
at
org.apache.jackrabbit.core.query.lucene.TextExtractorReader.close(TextExtractorReader.java:87)
at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:142)
at
org.apache.jackrabbit.core.query.lucene.LazyTextExtractorField.stringValue(LazyTextExtractorField.java:98)
at
org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:109)
at
org.apache.lucene.index.DocFieldConsumersPerField.processFields(DocFieldConsumersPerField.java:36)
at
org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:234)
at
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:765)
at
org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:743)
at
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1917)
at
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1895)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex$1.call(AbstractIndex.java:183)
at
org.apache.jackrabbit.core.query.lucene.DynamicPooledExecutor.executeAndWait(DynamicPooledExecutor.java:96)
at
org.apache.jackrabbit.core.query.lucene.AbstractIndex.addDocuments(AbstractIndex.java:188)
... 12 more
2010-1-9 18:20:06[ WARN](LazyTextExtractorField.java:94) Exception reading
value for field: Stream close
Several lines before, there is a log INFO line like this,
2010-1-9 18:19:54[ INFO](MultiIndex.java:1210) updating index with 1 nodes
from indexing queue.
I‘m wandering if it is caused by the indexing mechanism.
I knew that JackRabbit is not thread-safe, but how can I do the concurrency
control? In my case, the node.save function returned without indicating the
indexing still processing, how can I avoid these collision?
Anyone can help?