Hey god news Adam, you should tell Ben ;o)
BTW as we don't use any weighers I have removed the import and some others at
r948460
I also wondered if we should keep addAllFileTableValues which is not used internally (hence I guess useless) but I finally stopped
as there were also some other Type Safety warnings and I did not have time to continue
Jacques
From: <[email protected]>
Author: doogie
Date: Wed May 26 14:23:11 2010
New Revision: 948449
URL: http://svn.apache.org/viewvc?rev=948449&view=rev
Log:
Re-apply 948328, which brings us back to using the more efficient clhm,
but now UtilCache is not strictly least-recently-used. Instead, it's
more of a less-recently-used. This difference can be seen when reducing
the max-in-memory setting(but not reducing completely to 0).
Added:
ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar
Removed:
ofbiz/trunk/framework/base/lib/clhm-20100316.jar
Modified:
ofbiz/trunk/.classpath
ofbiz/trunk/LICENSE
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/test/UtilCacheTests.java
Modified: ofbiz/trunk/.classpath
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=948449&r1=948448&r2=948449&view=diff
==============================================================================
--- ofbiz/trunk/.classpath (original)
+++ ofbiz/trunk/.classpath Wed May 26 14:23:11 2010
@@ -15,7 +15,7 @@
<classpathentry kind="lib"
path="framework/base/lib/avalon-util-exception-1.0.0.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/barcode4j-fop-ext-complete-2.0.jar"/>
<classpathentry kind="lib" path="framework/base/lib/batik-all-1.7.jar"/>
- <classpathentry kind="lib" path="framework/base/lib/clhm-20100316.jar"/>
+ <classpathentry kind="lib"
path="framework/base/lib/clhm-release-1.0-lru.jar"/>
<classpathentry kind="lib" path="framework/base/lib/hamcrest-all-1.2.jar"/>
<classpathentry kind="lib" path="framework/base/lib/fop-0.95.jar"/>
<classpathentry kind="lib" path="framework/base/lib/freemarker-2.3.15.jar"/>
Modified: ofbiz/trunk/LICENSE
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=948449&r1=948448&r2=948449&view=diff
==============================================================================
--- ofbiz/trunk/LICENSE (original)
+++ ofbiz/trunk/LICENSE Wed May 26 14:23:11 2010
@@ -21,7 +21,7 @@ ofbiz/trunk/framework/base/lib/avalon-fr
ofbiz/trunk/framework/base/lib/avalon-util-exception-1.0.0.jar
ofbiz/trunk/framework/base/lib/batik-all-1.7.jar
ofbiz/trunk/framework/base/lib/barcode4j-fop-ext-complete-2.0.jar
-ofbiz/trunk/framework/base/lib/clhm-20100316.jar
+ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar
ofbiz/trunk/framework/base/lib/jakarta-regexp-1.5.jar
ofbiz/trunk/framework/base/lib/jpim-0.1.jar
ofbiz/trunk/framework/base/lib/juel-2.2.1.jar
Added: ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar?rev=948449&view=auto
==============================================================================
Files ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar (added) and ofbiz/trunk/framework/base/lib/clhm-release-1.0-lru.jar
Wed May 26 14:23:11 2010 differ
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java?rev=948449&r1=948448&r2=948449&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
(original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java Wed
May 26 14:23:11 2010
@@ -38,7 +38,9 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
-import
com.reardencommerce.kernel.collections.shared.evictable.ConcurrentLinkedHashMap;
+import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
+import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap.Builder;
+import com.googlecode.concurrentlinkedhashmap.Weighers;
import javolution.util.FastList;
import javolution.util.FastMap;
@@ -143,7 +145,9 @@ public class UtilCache<K, V> implements
if (maxMemSize == 0) {
memoryTable = new ConcurrentHashMap<Object, CacheLine<V>>();
} else {
- memoryTable =
ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.LRU,
maxMemSize);
+ memoryTable = new Builder<Object, CacheLine<V>>()
+ .maximumWeightedCapacity(maxMemSize)
+ .build();
}
if (this.useFileSystemStore) {
// create the manager the first time it is needed
@@ -723,7 +727,9 @@ public class UtilCache<K, V> implements
((ConcurrentLinkedHashMap)
this.memoryTable).setCapacity(newInMemory);
return;
} else {
- this.memoryTable =
ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.LRU,
newInMemory);
+ this.memoryTable =new Builder<Object, CacheLine<V>>()
+ .maximumWeightedCapacity(newInMemory)
+ .build();
}
} else {
this.memoryTable = new ConcurrentHashMap<Object, CacheLine<V>>();
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/test/UtilCacheTests.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/test/UtilCacheTests.java?rev=948449&r1=948448&r2=948449&view=diff
==============================================================================
---
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/test/UtilCacheTests.java
(original)
+++
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/test/UtilCacheTests.java
Wed May 26 14:23:11 2010
@@ -346,9 +346,8 @@ public class UtilCacheTests extends Gene
assertKey(s, cache, s, new String(s), new String(":" + s), i + 1,
map);
}
cache.setMaxInMemory(2);
- for (int i = 0; i < size - 2; i++) {
- map.remove(Integer.toString(i));
- }
+ assertEquals("cache.size", 2, cache.size());
+ map.keySet().retainAll(cache.getCacheLineKeys());
assertEquals("map-keys", map.keySet(), cache.getCacheLineKeys());
assertEquals("map-values", map.values(), cache.values());
cache.setMaxInMemory(0);