Author: michiel
Date: 2009-12-14 12:15:24 +0100 (Mon, 14 Dec 2009)
New Revision: 40231

Modified:
   
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/cache/CacheManager.java
Log:
ported some synchronization issues from trunk (could occur CCME e.g. in admin 
pages)

Modified: 
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/cache/CacheManager.java
===================================================================
--- 
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/cache/CacheManager.java
    2009-12-14 11:13:15 UTC (rev 40230)
+++ 
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/cache/CacheManager.java
    2009-12-14 11:15:24 UTC (rev 40231)
@@ -511,8 +511,16 @@
         public String getName() { return cache.getName(); }
         public String getDescription() { return cache.getDescription(); }
         public int getMaxEntrySize() { return cache.getMaxEntrySize(); }
-        public Set<Map.Entry<K, V>> getEntrySet() { return new 
HashSet<Map.Entry<K, V>>(cache.entrySet()); }
-        public Set<K> getKeySet() { return new HashSet<K>(cache.keySet()); }
+        public Set<Map.Entry<K, V>> getEntrySet() {
+            synchronized (cache.getLock()) {
+                return new HashSet<Map.Entry<K, V>>(cache.entrySet());
+            }
+        }
+        public Set<K> getKeySet() {
+            synchronized (cache.getLock()) {
+                return new HashSet<K>(cache.keySet());
+            }
+        }
         public long getHits() { return cache.getHits(); }
         public long  getMisses() { return cache.getMisses(); }
         public long getPuts() { return cache.getPuts(); }
@@ -536,12 +544,7 @@
                         }
                         public Iterator<Map.Entry<K, Integer>> iterator() {
                             return new Iterator<Map.Entry<K, Integer>>() {
-                                private Iterator<K> iterator;
-                                {
-                                    synchronized(cache.getLock()) {
-                                        iterator = new 
HashSet<K>(cache.keySet()).iterator();
-                                    }
-                                }
+                                private Iterator<K> iterator = 
Bean.this.getKeySet().iterator();
                                 public boolean hasNext() {
                                     return iterator.hasNext();
                                 }

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

Reply via email to