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);
+ }
}
}