IDEMPIERE-5267 Make Cache Max Size configurable via system property (#1325)
* IDEMPIERE-5267 Make Cache Max Size configurable via system property * Allow also value zero for cache max size
This commit is contained in:
parent
fda23ef1ae
commit
cfb4ebe785
|
|
@ -43,7 +43,7 @@ public class CCache<K,V> implements CacheInterface, Map<K, V>, Serializable
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -2268565219001179841L;
|
private static final long serialVersionUID = 4960404895430292476L;
|
||||||
|
|
||||||
protected Map<K, V> cache = null;
|
protected Map<K, V> cache = null;
|
||||||
|
|
||||||
|
|
@ -77,6 +77,31 @@ public class CCache<K,V> implements CacheInterface, Map<K, V>, Serializable
|
||||||
return 60;
|
return 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the max size for the cache based on a system property
|
||||||
|
* for example -DCache.MaxSize.AD_Column=15000 will set the max size for AD_Column
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static int getCacheMaxSize(String name)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String property = System.getProperty("Cache.MaxSize." + name);
|
||||||
|
if (property != null && property.trim().length() > 0)
|
||||||
|
{
|
||||||
|
int cacheMaxSize = 0;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cacheMaxSize = Integer.parseInt(property.trim());
|
||||||
|
} catch (Throwable t) {}
|
||||||
|
if (cacheMaxSize > 0)
|
||||||
|
return cacheMaxSize;
|
||||||
|
}
|
||||||
|
} catch (Throwable t) {}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
public CCache (String name, int initialCapacity)
|
public CCache (String name, int initialCapacity)
|
||||||
{
|
{
|
||||||
this(name, name, initialCapacity);
|
this(name, name, initialCapacity);
|
||||||
|
|
@ -100,7 +125,7 @@ public class CCache<K,V> implements CacheInterface, Map<K, V>, Serializable
|
||||||
/**
|
/**
|
||||||
* Adempiere Cache - expires after 2 hours
|
* Adempiere Cache - expires after 2 hours
|
||||||
* @param name (table) name of the cache
|
* @param name (table) name of the cache
|
||||||
* @param initialCapacity initial capacity
|
* @param initialCapacity initial capacity // ignored
|
||||||
*/
|
*/
|
||||||
public CCache (String tableName, String name, int initialCapacity)
|
public CCache (String tableName, String name, int initialCapacity)
|
||||||
{
|
{
|
||||||
|
|
@ -120,7 +145,7 @@ public class CCache<K,V> implements CacheInterface, Map<K, V>, Serializable
|
||||||
/**
|
/**
|
||||||
* Adempiere Cache
|
* Adempiere Cache
|
||||||
* @param name (table) name of the cache
|
* @param name (table) name of the cache
|
||||||
* @param initialCapacity initial capacity
|
* @param initialCapacity initial capacity // ignored
|
||||||
* @param expireMinutes expire after minutes (0=no expire)
|
* @param expireMinutes expire after minutes (0=no expire)
|
||||||
* @param distributed
|
* @param distributed
|
||||||
* @param maxSize ignore if distributed=true
|
* @param maxSize ignore if distributed=true
|
||||||
|
|
@ -130,7 +155,11 @@ public class CCache<K,V> implements CacheInterface, Map<K, V>, Serializable
|
||||||
m_name = name;
|
m_name = name;
|
||||||
m_tableName = tableName;
|
m_tableName = tableName;
|
||||||
setExpireMinutes(expireMinutes);
|
setExpireMinutes(expireMinutes);
|
||||||
m_maxSize = maxSize;
|
int propMaxSize = getCacheMaxSize(name);
|
||||||
|
if (propMaxSize >= 0)
|
||||||
|
m_maxSize = propMaxSize;
|
||||||
|
else
|
||||||
|
m_maxSize = maxSize;
|
||||||
cache = CacheMgt.get().register(this, distributed);
|
cache = CacheMgt.get().register(this, distributed);
|
||||||
m_distributed = distributed;
|
m_distributed = distributed;
|
||||||
if (distributed) {
|
if (distributed) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue