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 {