You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2005/12/14 20:58:29 UTC

svn commit: r356837 - in /incubator/roller/trunk/src/org/roller/presentation: cache/LRUCacheImpl.java filters/FeedCacheFilter.java filters/WeblogPageCacheFilter.java

Author: agilliland
Date: Wed Dec 14 11:58:23 2005
New Revision: 356837

URL: http://svn.apache.org/viewcvs?rev=356837&view=rev
Log:
the map used for the cache should be synchronized itself, and while iterating over the cache keys we should be synchronized against the cache.


Modified:
    incubator/roller/trunk/src/org/roller/presentation/cache/LRUCacheImpl.java
    incubator/roller/trunk/src/org/roller/presentation/filters/FeedCacheFilter.java
    incubator/roller/trunk/src/org/roller/presentation/filters/WeblogPageCacheFilter.java

Modified: incubator/roller/trunk/src/org/roller/presentation/cache/LRUCacheImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/cache/LRUCacheImpl.java?rev=356837&r1=356836&r2=356837&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/cache/LRUCacheImpl.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/cache/LRUCacheImpl.java Wed Dec 14 11:58:23 2005
@@ -5,6 +5,7 @@
  */
 package org.roller.presentation.cache;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -28,13 +29,13 @@
     
     protected LRUCacheImpl() {
         
-        this.cache = new LRULinkedHashMap(100);
+        this.cache = Collections.synchronizedMap(new LRULinkedHashMap(100));
     }
     
     
     protected LRUCacheImpl(int maxsize) {
         
-        this.cache = new LRULinkedHashMap(maxsize);
+        this.cache = Collections.synchronizedMap(new LRULinkedHashMap(maxsize));
     }
     
     

Modified: incubator/roller/trunk/src/org/roller/presentation/filters/FeedCacheFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/filters/FeedCacheFilter.java?rev=356837&r1=356836&r2=356837&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/filters/FeedCacheFilter.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/filters/FeedCacheFilter.java Wed Dec 14 11:58:23 2005
@@ -212,16 +212,19 @@
         // TODO: it would be nice to be able to do this without iterating 
         //       over the entire cache key set
         String key = null;
-        Iterator allKeys = this.mFeedCache.keySet().iterator();
-        while(allKeys.hasNext()) {
-            key = (String) allKeys.next();
-            
-            if(key.startsWith("feedCache:main")) {
-                removeSet.add(key);
-            } else if(key.startsWith("feedCache:planet")) {
-                removeSet.add(key);
-            } else if(key.startsWith("feedCache:weblog/"+website.getHandle())) {
-                removeSet.add(key);
+        
+        synchronized(mFeedCache) {
+            Iterator allKeys = this.mFeedCache.keySet().iterator();
+            while(allKeys.hasNext()) {
+                key = (String) allKeys.next();
+                
+                if(key.startsWith("feedCache:main")) {
+                    removeSet.add(key);
+                } else if(key.startsWith("feedCache:planet")) {
+                    removeSet.add(key);
+                } else if(key.startsWith("feedCache:weblog/"+website.getHandle())) {
+                    removeSet.add(key);
+                }
             }
         }
         

Modified: incubator/roller/trunk/src/org/roller/presentation/filters/WeblogPageCacheFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/filters/WeblogPageCacheFilter.java?rev=356837&r1=356836&r2=356837&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/filters/WeblogPageCacheFilter.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/filters/WeblogPageCacheFilter.java Wed Dec 14 11:58:23 2005
@@ -232,20 +232,23 @@
         // TODO: it would be nice to be able to do this without iterating 
         //       over the entire cache key set
         String key = null;
-        Iterator allKeys = this.mPageCache.keySet().iterator();
-        while(allKeys.hasNext()) {
-            key = (String) allKeys.next();
-            if(key.startsWith(keyBase+"/main")) {
-                removeSet.add(key);
-            } else if(key.startsWith(keyBase+"/archive")) {
-                // at some point it would be cool to actually calculate what
-                // archive pages to remove in specific, rather than all of 'em
-                removeSet.add(key);
-            } else if(key.startsWith(keyBase+"/permalink/"+entry.getAnchor())) {
-                removeSet.add(key);
+        
+        synchronized(mPageCache) {
+            Iterator allKeys = this.mPageCache.keySet().iterator();
+            while(allKeys.hasNext()) {
+                key = (String) allKeys.next();
+                if(key.startsWith(keyBase+"/main")) {
+                    removeSet.add(key);
+                } else if(key.startsWith(keyBase+"/archive")) {
+                    // at some point it would be cool to actually calculate what
+                    // archive pages to remove in specific, rather than all of 'em
+                    removeSet.add(key);
+                } else if(key.startsWith(keyBase+"/permalink/"+entry.getAnchor())) {
+                    removeSet.add(key);
+                }
             }
         }
-        
+
         this.mPageCache.remove(removeSet);
         this.purges += removeSet.size();
     }
@@ -266,12 +269,15 @@
         // TODO: it would be nice to be able to do this without iterating 
         //       over the entire cache key set
         String key = null;
-        Iterator allKeys = this.mPageCache.keySet().iterator();
-        while(allKeys.hasNext()) {
-            key = (String) allKeys.next();
-            
-            if(key.startsWith("pageCache:weblog/"+website.getHandle())) {
-                removeSet.add(key);
+        
+        synchronized(mPageCache) {
+            Iterator allKeys = this.mPageCache.keySet().iterator();
+            while(allKeys.hasNext()) {
+                key = (String) allKeys.next();
+                
+                if(key.startsWith("pageCache:weblog/"+website.getHandle())) {
+                    removeSet.add(key);
+                }
             }
         }