Re: svn commit: r1084732 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r1084732 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java

Adrian Crum-3
It would be nice if we had a test for this.

-Adrian

On 3/23/2011 1:44 PM, [hidden email] wrote:

> Author: erwan
> Date: Wed Mar 23 20:44:17 2011
> New Revision: 1084732
>
> URL: http://svn.apache.org/viewvc?rev=1084732&view=rev
> Log:
> OFBIZ-4220 a patch from Philippe Mouawad: Current implementation of UtilCache has a memory leak if maxInMemory is set
>
> Modified:
>      ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
>
> 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=1084732&r1=1084731&r2=1084732&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 Mar 23 20:44:17 2011
> @@ -49,6 +49,7 @@ import org.ofbiz.base.util.UtilObject;
>   import org.ofbiz.base.util.UtilValidate;
>
>   import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
> +import com.googlecode.concurrentlinkedhashmap.EvictionListener;
>   import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap.Builder;
>
>   /**
> @@ -63,8 +64,8 @@ import com.googlecode.concurrentlinkedha
>    *
>    */
>   @SuppressWarnings("serial")
> -public class UtilCache<K, V>  implements Serializable {
> -
> +public class UtilCache<K, V>  implements Serializable, EvictionListener<Object, CacheLine<V>>  {
> +
>       public static final String module = UtilCache.class.getName();
>
>       /** A static Map to keep track of all of the UtilCache instances. */
> @@ -143,6 +144,7 @@ public class UtilCache<K, V>  implements
>           } else {
>               memoryTable = new Builder<Object, CacheLine<V>>()
>               .maximumWeightedCapacity(maxMemSize)
> +            .listener(this)
>               .build();
>           }
>           if (this.useFileSystemStore) {
> @@ -1027,4 +1029,9 @@ public class UtilCache<K, V>  implements
>       public static<K, V>  UtilCache<K, V>  findCache(String cacheName) {
>           return (UtilCache<K, V>) UtilCache.utilCacheTable.get(cacheName);
>       }
> +
> + @Override
> + public void onEviction(Object key, CacheLine<V>  value) {
> + ExecutionPool.removePulse(value);
> + }
>   }
>
>