[exo-jcr-commits] exo-jcr SVN: r4100 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Mar 16 10:12:31 EDT 2011
Author: nzamosenchuk
Date: 2011-03-16 10:12:31 -0400 (Wed, 16 Mar 2011)
New Revision: 4100
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
Log:
EXOJCR-834 : Take lastIndexReader in a more safe way. Skip exception for lastIndexReader retrieval to do the best to index data, skipping any kind of errors related to unnecessary lastIndexReader.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-03-16 13:23:52 UTC (rev 4099)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-03-16 14:12:31 UTC (rev 4100)
@@ -20,6 +20,7 @@
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
+import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
import org.exoplatform.commons.utils.SecurityHelper;
@@ -587,9 +588,17 @@
// try to avoid getting index reader for each doc
int lastIndexReaderId = indexes.size() - 1;
// check, index list can be empty
- lastIndexReader =
- (lastIndexReaderId >= 0) ? ((PersistentIndex)indexes.get(lastIndexReaderId)).getReadOnlyIndexReader()
- : null;
+ try
+ {
+ lastIndexReader =
+ (lastIndexReaderId >= 0) ? ((PersistentIndex)indexes.get(lastIndexReaderId))
+ .getReadOnlyIndexReader() : null;
+ }
+ catch (Throwable e)
+ {
+ // this is safe index reader retrieval. The last index already closed, possibly merged or any other exception that occurs here
+ }
+
for (Iterator it = add.iterator(); it.hasNext();)
{
Document doc = (Document)it.next();
@@ -616,7 +625,17 @@
lastIndexReader.release();
}
lastIndexReaderId = indexes.size() - 1;
- lastIndexReader = ((PersistentIndex)indexes.get(lastIndexReaderId)).getReadOnlyIndexReader();
+ try
+ {
+ lastIndexReader =
+ ((PersistentIndex)indexes.get(lastIndexReaderId)).getReadOnlyIndexReader();
+ }
+ catch (Throwable e)
+ {
+ // this is safe index reader retrieval. The last index already closed, possibly merged or any other exception that occurs here
+ lastIndexReader = null;
+ lastIndexReaderId = -1;
+ }
}
// if indexReader exists (it is possible that no persisted indexes exists on start)
if (lastIndexReader != null)
More information about the exo-jcr-commits
mailing list