You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2011/12/12 00:39:21 UTC
svn commit: r1213110 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/CHANGES.txt lucene/src/java/org/apache/lucene/index/MultiReader.java
Author: uschindler
Date: Sun Dec 11 23:39:20 2011
New Revision: 1213110
URL: http://svn.apache.org/viewvc?rev=1213110&view=rev
Log:
Merged revision(s) 1213106 from lucene/dev/trunk:
LUCENE-3641: Fixed MultiReader to correctly propagate readerFinishedListeners to clones/reopened readers
Modified:
lucene/dev/branches/branch_3x/ (props changed)
lucene/dev/branches/branch_3x/lucene/ (props changed)
lucene/dev/branches/branch_3x/lucene/CHANGES.txt
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/MultiReader.java
Modified: lucene/dev/branches/branch_3x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/CHANGES.txt?rev=1213110&r1=1213109&r2=1213110&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/lucene/CHANGES.txt Sun Dec 11 23:39:20 2011
@@ -70,6 +70,9 @@ Bug fixes
In ParallelReader the bug was not existent, but the implementation method
was also made private. (Uwe Schindler)
+* LUCENE-3641: Fixed MultiReader to correctly propagate readerFinishedListeners
+ to clones/reopened readers. (Uwe Schindler)
+
Documentation
* LUCENE-3597: Fixed incorrect grouping documentation. (Martijn van Groningen, Robert Muir)
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/MultiReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/MultiReader.java?rev=1213110&r1=1213109&r2=1213110&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/MultiReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/MultiReader.java Sun Dec 11 23:39:20 2011
@@ -37,7 +37,7 @@ import org.apache.lucene.util.MapBackedS
public class MultiReader extends IndexReader implements Cloneable {
protected final IndexReader[] subReaders;
protected final int[] starts; // 1st docno for each segment
- private boolean[] decrefOnClose; // remember which subreaders to decRef on close
+ private final boolean[] decrefOnClose; // remember which subreaders to decRef on close
private final Map<String,byte[]> normsCache = new HashMap<String,byte[]>();
private int maxDoc = 0;
private int numDocs = -1;
@@ -84,6 +84,23 @@ public class MultiReader extends IndexRe
readerFinishedListeners = new MapBackedSet<ReaderFinishedListener>(new ConcurrentHashMap<ReaderFinishedListener,Boolean>());
}
+ // used only by openIfChaged
+ private MultiReader(IndexReader[] subReaders, boolean[] decrefOnClose,
+ Collection<ReaderFinishedListener> readerFinishedListeners)
+ throws IOException {
+ this.subReaders = subReaders.clone();
+ this.decrefOnClose = decrefOnClose;
+ this.readerFinishedListeners = readerFinishedListeners;
+ starts = new int[subReaders.length + 1]; // build starts array
+ for (int i = 0; i < subReaders.length; i++) {
+ starts[i] = maxDoc;
+ maxDoc += subReaders[i].maxDoc(); // compute maxDocs
+ if (subReaders[i].hasDeletions())
+ hasDeletions = true;
+ }
+ starts[subReaders.length] = maxDoc;
+ }
+
@Override
protected synchronized IndexReader doOpenIfChanged() throws CorruptIndexException, IOException {
return doReopen(false);
@@ -172,9 +189,7 @@ public class MultiReader extends IndexRe
newDecrefOnClose[i] = true;
}
}
- MultiReader mr = new MultiReader(newSubReaders);
- mr.decrefOnClose = newDecrefOnClose;
- return mr;
+ return new MultiReader(newSubReaders, newDecrefOnClose, readerFinishedListeners);
} else {
return null;
}