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/14 18:44:43 UTC
svn commit: r1214379 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
Author: uschindler
Date: Wed Dec 14 17:44:43 2011
New Revision: 1214379
URL: http://svn.apache.org/viewvc?rev=1214379&view=rev
Log:
Merged revision(s) 1214376 from lucene/dev/trunk:
LUCENE-3644: Use one instance of the listener class also for composite/SlowMultiReader (to prevent filling the CHS of IR). Also don't use FieldCache.DEFAULT from inside FieldCacheImpl, as it makes extension hard. We have "wrapper" reference for that.
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/search/FieldCacheImpl.java
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java?rev=1214379&r1=1214378&r2=1214379&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java Wed Dec 14 17:44:43 2011
@@ -137,10 +137,18 @@ class FieldCacheImpl implements FieldCac
}
// per-segment fieldcaches don't purge until the shared core closes.
- final static SegmentReader.CoreClosedListener purgeCore = new SegmentReader.CoreClosedListener() {
+ final SegmentReader.CoreClosedListener purgeCore = new SegmentReader.CoreClosedListener() {
// @Override -- not until Java 1.6
public void onClose(SegmentReader owner) {
- FieldCache.DEFAULT.purge(owner);
+ FieldCacheImpl.this.purge(owner);
+ }
+ };
+
+ // composite/SlowMultiReaderWrapper fieldcaches don't purge until composite reader is closed.
+ final IndexReader.ReaderClosedListener purgeReader = new IndexReader.ReaderClosedListener() {
+ // @Override -- not until Java 1.6
+ public void onClose(IndexReader owner) {
+ FieldCacheImpl.this.purge(owner);
}
};
@@ -180,13 +188,9 @@ class FieldCacheImpl implements FieldCac
innerCache = new HashMap<Entry,Object>();
readerCache.put(readerKey, innerCache);
if (reader instanceof SegmentReader) {
- ((SegmentReader) reader).addCoreClosedListener(purgeCore);
+ ((SegmentReader) reader).addCoreClosedListener(wrapper.purgeCore);
} else {
- reader.addReaderClosedListener(new IndexReader.ReaderClosedListener() {
- public void onClose(IndexReader reader) {
- FieldCache.DEFAULT.purge(reader);
- }
- });
+ reader.addReaderClosedListener(wrapper.purgeReader);
}
}
if (innerCache.get(key) == null) {
@@ -209,13 +213,9 @@ class FieldCacheImpl implements FieldCac
innerCache = new HashMap<Entry,Object>();
readerCache.put(readerKey, innerCache);
if (reader instanceof SegmentReader) {
- ((SegmentReader) reader).addCoreClosedListener(purgeCore);
+ ((SegmentReader) reader).addCoreClosedListener(wrapper.purgeCore);
} else {
- reader.addReaderClosedListener(new IndexReader.ReaderClosedListener() {
- public void onClose(IndexReader reader) {
- FieldCache.DEFAULT.purge(reader);
- }
- });
+ reader.addReaderClosedListener(wrapper.purgeReader);
}
value = null;
} else {