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