You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2010/10/02 01:21:49 UTC

svn commit: r1003703 - in /lucene/dev/trunk/solr: CHANGES.txt src/common/org/apache/solr/common/util/ConcurrentLRUCache.java src/test/org/apache/solr/search/TestFastLRUCache.java

Author: hossman
Date: Fri Oct  1 23:21:49 2010
New Revision: 1003703

URL: http://svn.apache.org/viewvc?rev=1003703&view=rev
Log:
SOLR-2135: Fix behavior of ConcurrentLRUCache when asking for getLatestAccessedItems(0) or getOldestAccessedItems(0)

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/ConcurrentLRUCache.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestFastLRUCache.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1003703&r1=1003702&r2=1003703&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri Oct  1 23:21:49 2010
@@ -505,6 +505,10 @@ Bug Fixes
   wildcard support. For example, a query of *zemog* would match documents that contain
   'gomez'.  (Landon Kuhn via Robert Muir)
 
+* SOLR-2135: Fix behavior of ConcurrentLRUCache when asking for
+  getLatestAccessedItems(0) or getOldestAccessedItems(0).
+  (David Smiley via hossman)
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/ConcurrentLRUCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/ConcurrentLRUCache.java?rev=1003703&r1=1003702&r2=1003703&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/ConcurrentLRUCache.java (original)
+++ lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/ConcurrentLRUCache.java Fri Oct  1 23:21:49 2010
@@ -398,6 +398,8 @@ public class ConcurrentLRUCache<K,V> {
    */
   public Map<K, V> getOldestAccessedItems(int n) {
     Map<K, V> result = new LinkedHashMap<K, V>();
+    if (n <= 0)
+      return result;
     TreeSet<CacheEntry> tree = new TreeSet<CacheEntry>();
     markAndSweepLock.lock();
     try {
@@ -424,6 +426,8 @@ public class ConcurrentLRUCache<K,V> {
 
   public Map<K,V> getLatestAccessedItems(int n) {
     Map<K,V> result = new LinkedHashMap<K,V>();
+    if (n <= 0)
+      return result;
     TreeSet<CacheEntry> tree = new TreeSet<CacheEntry>();
     // we need to grab the lock since we are changing lastAccessedCopy
     markAndSweepLock.lock();

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestFastLRUCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestFastLRUCache.java?rev=1003703&r1=1003702&r2=1003703&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestFastLRUCache.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestFastLRUCache.java Fri Oct  1 23:21:49 2010
@@ -243,6 +243,14 @@ public class TestFastLRUCache extends Lu
     assertNotNull(m.get(5));
     assertNotNull(m.get(4));
     assertNotNull(m.get(2));
+
+    m = cache.getOldestAccessedItems(0);
+    assertTrue(m.isEmpty());
+
+    //test this too
+    m = cache.getLatestAccessedItems(0);
+    assertTrue(m.isEmpty());
+
     cache.destroy();
   }