You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/29 23:22:22 UTC

svn commit: r1477348 - in /lucene/dev/branches/branch_4x/lucene: CHANGES.txt core/src/java/org/apache/lucene/search/CachingWrapperFilter.java core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java

Author: mikemccand
Date: Mon Apr 29 21:22:15 2013
New Revision: 1477348

URL: http://svn.apache.org/r1477348
Log:
LUCENE-4966: add CachingWrapperFilter.sizeInBytes

Modified:
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java

Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1477348&r1=1477347&r2=1477348&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Mon Apr 29 21:22:15 2013
@@ -67,6 +67,8 @@ New Features
   DrillDownQuery and DrillSideways, to support future dynamic faceting
   methods (Mike McCandless)
 
+* LUCENE-4966: Add CachingWrapperFilter.sizeInBytes() (Mike McCandless)
+
 ======================= Lucene 4.3.0 =======================
 
 Changes in backwards compatibility policy

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java?rev=1477348&r1=1477347&r2=1477348&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java Mon Apr 29 21:22:15 2013
@@ -18,14 +18,17 @@ package org.apache.lucene.search;
  */
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.WeakHashMap;
 
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.FixedBitSet;
+import org.apache.lucene.util.RamUsageEstimator;
 
 /**
  * Wraps another {@link Filter}'s result and caches it.  The purpose is to allow
@@ -132,4 +135,21 @@ public class CachingWrapperFilter extend
       return null;
     }
   };
+
+  /** Returns total byte size used by cached filters. */
+  public long sizeInBytes() {
+
+    // Sync only to pull the current set of values:
+    List<DocIdSet> docIdSets;
+    synchronized(cache) {
+      docIdSets = new ArrayList<DocIdSet>(cache.values());
+    }
+
+    long total = 0;
+    for(DocIdSet dis : docIdSets) {
+      total += RamUsageEstimator.sizeOf(dis);
+    }
+
+    return total;
+  }
 }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java?rev=1477348&r1=1477347&r2=1477348&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java Mon Apr 29 21:22:15 2013
@@ -199,6 +199,7 @@ public class TestCachingWrapperFilter ex
     CachingWrapperFilter filter = new CachingWrapperFilter(startFilter);
 
     docs = searcher.search(new MatchAllDocsQuery(), filter, 1);
+    assertTrue(filter.sizeInBytes() > 0);
 
     assertEquals("[query + filter] Should find a hit...", 1, docs.totalHits);