Author: thomasm
Date: Thu Jul  9 11:58:53 2015
New Revision: 1690070

URL: http://svn.apache.org/r1690070
Log:
OAK-3089 LIRS cache: zero size cache causes IllegalArgumentException

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java?rev=1690070&r1=1690069&r2=1690070&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
 Thu Jul  9 11:58:53 2015
@@ -409,8 +409,8 @@ public class CacheLIRS<K, V> implements
      * @param maxMemory the maximum size (1 or larger)
      */
     public void setMaxMemory(long maxMemory) {
-        if (maxMemory <= 0) {
-            throw new IllegalArgumentException("Max memory must be larger than 
0");
+        if (maxMemory < 0) {
+            throw new IllegalArgumentException("Max memory must not be 
negative");
         }
         this.maxMemory = maxMemory;
         if (segments != null) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java?rev=1690070&r1=1690069&r2=1690070&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java
 Thu Jul  9 11:58:53 2015
@@ -90,7 +90,7 @@ public class CacheTest {
             // expected
         }
         try {
-            test.setMaxMemory(0);
+            test.setMaxMemory(-1);
             fail();
         } catch (IllegalArgumentException e) {
             // expected
@@ -629,6 +629,15 @@ public class CacheTest {
     }
     
     @Test
+    public void testZeroSizeCache() {
+        CacheLIRS<Integer, String> cache = createCache(0, 100);
+        cache.put(1, "Hello", 100);
+        cache.put(2, "World", 100);
+        cache.put(3, "!", 100);
+        assertFalse(cache.containsKey(1));
+    }
+    
+    @Test
     public void testRefresh() throws ExecutionException {
         CacheLIRS<Integer, String> cache = new CacheLIRS.Builder().
                 maximumWeight(100).


Reply via email to