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/20 19:02:25 UTC
svn commit: r1221371 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/src/java/org/apache/lucene/index/IndexReader.java
lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java
lucene/src/java/org/apache/lucene/index/SegmentReader.java
Author: uschindler
Date: Tue Dec 20 18:02:25 2011
New Revision: 1221371
URL: http://svn.apache.org/viewvc?rev=1221371&view=rev
Log:
Merged revision(s) 1221369 from lucene/dev/trunk:
LUCENE-3656: Change data type used for Core-/ReaderClosedListener from ConcurrentHashMap to simple synchronized HashSet
Modified:
lucene/dev/branches/branch_3x/ (props changed)
lucene/dev/branches/branch_3x/lucene/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexReader.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexReader.java?rev=1221371&r1=1221370&r2=1221371&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexReader.java Tue Dec 20 18:02:25 2011
@@ -22,9 +22,11 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lucene.document.Document;
@@ -93,7 +95,7 @@ public abstract class IndexReader implem
}
private final Set<ReaderClosedListener> readerClosedListeners =
- new MapBackedSet<ReaderClosedListener>(new ConcurrentHashMap<ReaderClosedListener, Boolean>());
+ Collections.synchronizedSet(new LinkedHashSet<ReaderClosedListener>());
/** Expert: adds a {@link ReaderClosedListener}. The
* provided listener will be invoked when this reader is closed.
@@ -113,8 +115,10 @@ public abstract class IndexReader implem
}
private final void notifyReaderClosedListeners() {
- for(ReaderClosedListener listener : readerClosedListeners) {
- listener.onClose(this);
+ synchronized(readerClosedListeners) {
+ for(ReaderClosedListener listener : readerClosedListeners) {
+ listener.onClose(this);
+ }
}
}
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java?rev=1221371&r1=1221370&r2=1221371&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentCoreReaders.java Tue Dec 20 18:02:25 2011
@@ -18,15 +18,15 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
+import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lucene.index.SegmentReader.CoreClosedListener;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.MapBackedSet;
/** Holds core readers that are shared (unchanged) when
* SegmentReader is cloned or reopened */
@@ -59,8 +59,8 @@ final class SegmentCoreReaders {
CompoundFileReader cfsReader;
CompoundFileReader storeCFSReader;
- final Set<CoreClosedListener> coreClosedListeners =
- new MapBackedSet<CoreClosedListener>(new ConcurrentHashMap<CoreClosedListener, Boolean>());
+ private final Set<CoreClosedListener> coreClosedListeners =
+ Collections.synchronizedSet(new LinkedHashSet<CoreClosedListener>());
SegmentCoreReaders(SegmentReader owner, Directory dir, SegmentInfo si, int readBufferSize, int termsIndexDivisor) throws IOException {
segment = si.name;
@@ -171,12 +171,26 @@ final class SegmentCoreReaders {
fieldsReaderOrig, cfsReader, storeCFSReader);
tis = null;
// Now, notify any ReaderFinished listeners:
+ notifyCoreClosedListeners();
+ }
+ }
+
+ private final void notifyCoreClosedListeners() {
+ synchronized(coreClosedListeners) {
for (CoreClosedListener listener : coreClosedListeners) {
listener.onClose(owner);
}
}
}
+ void addCoreClosedListener(CoreClosedListener listener) {
+ coreClosedListeners.add(listener);
+ }
+
+ void removeCoreClosedListener(CoreClosedListener listener) {
+ coreClosedListeners.remove(listener);
+ }
+
synchronized void openDocStores(SegmentInfo si) throws IOException {
assert si.name.equals(segment);
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java?rev=1221371&r1=1221370&r2=1221371&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java Tue Dec 20 18:02:25 2011
@@ -957,12 +957,12 @@ public class SegmentReader extends Index
/** Expert: adds a CoreClosedListener to this reader's shared core */
public void addCoreClosedListener(CoreClosedListener listener) {
ensureOpen();
- core.coreClosedListeners.add(listener);
+ core.addCoreClosedListener(listener);
}
/** Expert: removes a CoreClosedListener from this reader's shared core */
public void removeCoreClosedListener(CoreClosedListener listener) {
ensureOpen();
- core.coreClosedListeners.remove(listener);
+ core.removeCoreClosedListener(listener);
}
}