Author: michiel
Date: 2009-06-25 15:56:51 +0200 (Thu, 25 Jun 2009)
New Revision: 36411

Modified:
   mmbase/trunk/core/src/main/java/org/mmbase/cache/implementation/LRUCache.java
Log:
entrySet().iterator().remove would change access order, which is wrong

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/cache/implementation/LRUCache.java
===================================================================
--- 
mmbase/trunk/core/src/main/java/org/mmbase/cache/implementation/LRUCache.java   
    2009-06-25 13:41:04 UTC (rev 36410)
+++ 
mmbase/trunk/core/src/main/java/org/mmbase/cache/implementation/LRUCache.java   
    2009-06-25 13:56:51 UTC (rev 36411)
@@ -48,13 +48,13 @@
                     // disappears, because that seems to fail sometimes for 
QueryResultCache.
                     // The assertions are ment to detect the odd situations 
where this would have happened.
 
-                    Iterator<Map.Entry<K, V>> i = entrySet().iterator();
-                    Map.Entry<K, V> actualEldest = i.next();
+                    Iterator<K> i = keySet().iterator();
+                    K actualEldest = i.next();
                     i.remove();
-                    if ( !( (eldest == null && actualEldest == null) || 
(eldest != null && eldest.equals(actualEldest)))) {
+                    if ( !( (eldest.getKey() == null && actualEldest == null) 
|| (eldest.getKey() != null && eldest.equals(actualEldest)))) {
                         log.warn("equal: " + eldest + " != " + actualEldest);
                     }
-                    if (! (eldest == null && actualEldest == null) || (eldest 
!= null && actualEldest != null && eldest.hashCode() == 
actualEldest.hashCode())) {
+                    if (! (eldest.getKey() == null && actualEldest == null) || 
(eldest.getKey() != null && actualEldest != null && eldest.getKey().hashCode() 
== actualEldest.hashCode())) {
                         log.warn("hashcodes: " + eldest + " != " + 
actualEldest);
                     }
                     if  (size() > LRUCache.this.maxSize) {
@@ -91,7 +91,7 @@
         synchronized(backing) {
             while (size() > maxSize) {
                 try {
-                    Iterator<Entry<K,V>> i = entrySet().iterator();
+                    Iterator<K> i = keySet().iterator();
                     i.next();
                     i.remove();
                 } catch (Exception e) {

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to