Thanks Ard. I will apply this patch today after work. :-)
Best Regards,
Antonio Gallardo
Ard Schrijvers escribió:
This is a partial fix of a larger problem that I am not yet capable of fixing: removing cachekeys according the correct eviction policy.
This fix at least fixes the flaw, that the StoreJanitor could delete the entire
memoryStore part from ehcache. In the JCSDefaultStore, this size() method was
already correct. I just noticed, that JCSDefaultStore is not in the cocoon
trunk anymore. Is there specific reason for it? Did it move?
Regards Ard Schrijvers
The EHDefaultStore returns in the size() method the wrong
number of keys
--------------------------------------------------------------
----------
Key: COCOON-1885
URL: http://issues.apache.org/jira/browse/COCOON-1885
Project: Cocoon
Issue Type: Bug
Components: * Cocoon Core
Affects Versions: 2.1.9
Reporter: Ard Schrijvers
Priority: Critical
The excalibut store interface defines a size() method for a store:
/**
* Returns count of the objects in the store, or -1 if
could not be
* obtained.
*/
int size();
What it not explicitely says, is that it is the number of
keys in memoryStore (so not the diskStore) is needed. The
StoreJanitor uses this size() to free some memory from cache
when the JVM is low on memory. Since the current
EHDefaultStore returns with size() ALL cachekeys
(memoryStoreSize + diskStoreSize), it is quite likely when
having a large cache that the StoreJanitor removes all
cachekeys in memoryStore. Simply changing the size() method
of EHDefaultStore to return the number of keys in memoryStore
is sufficient. The JCSDefaultStore did implement it
correctly already (though I do not see it in the cocoon trunk
anymore..?)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the
administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira