You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2013/12/08 11:10:42 UTC
svn commit: r1549012 - in /lucene/dev/trunk/lucene: CHANGES.txt
core/src/java/org/apache/lucene/index/IndexReader.java
core/src/java/org/apache/lucene/index/SegmentCoreReaders.java
Author: simonw
Date: Sun Dec 8 10:10:42 2013
New Revision: 1549012
URL: http://svn.apache.org/r1549012
Log:
LUCENE-5362: IndexReader and SegmentCoreReaders now throw AlreadyClosedException if the refCount in incremented but is less that 1.
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1549012&r1=1549011&r2=1549012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Sun Dec 8 10:10:42 2013
@@ -101,6 +101,12 @@ Bug fixes
* LUCENE-5285: Improved highlighting of multi-valued fields with
FastVectorHighlighter. (Nik Everett via Adrien Grand)
+Changes in Runtime Behavior
+
+* LUCENE-5362: IndexReader and SegmentCoreReaders now throw
+ AlreadyClosedException if the refCount in incremented but
+ is less that 1. (Simon Willnauer)
+
======================= Lucene 4.6.0 =======================
New Features
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexReader.java?rev=1549012&r1=1549011&r2=1549012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexReader.java Sun Dec 8 10:10:42 2013
@@ -168,8 +168,9 @@ public abstract class IndexReader implem
* @see #tryIncRef
*/
public final void incRef() {
- ensureOpen();
- refCount.incrementAndGet();
+ if (!tryIncRef()) {
+ ensureOpen();
+ }
}
/**
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java?rev=1549012&r1=1549011&r2=1549012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java Sun Dec 8 10:10:42 2013
@@ -32,6 +32,7 @@ import org.apache.lucene.codecs.Postings
import org.apache.lucene.codecs.StoredFieldsReader;
import org.apache.lucene.codecs.TermVectorsReader;
import org.apache.lucene.index.SegmentReader.CoreClosedListener;
+import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.CompoundFileDirectory;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
@@ -139,7 +140,13 @@ final class SegmentCoreReaders {
}
void incRef() {
- ref.incrementAndGet();
+ int count;
+ while ((count = ref.get()) > 0) {
+ if (ref.compareAndSet(count, count+1)) {
+ return;
+ }
+ }
+ throw new AlreadyClosedException("SegmentCoreReaders is already closed");
}
NumericDocValues getNormValues(FieldInfo fi) throws IOException {