Ard Schrijvers escribió:
Thx!!

You do not happen to know where the JCSDefaultStore went in trunk..?? I read 
some stuff about it outperforming ehcache in almost every way (and that it 
might be easier to implement the eviction policy driven freeing of cachekeys).
WARINIG: I am far to be a cocoon expert. I guess Carsten may answer this question a long way better than me. But let me do a try digging into my memory:

Apache JCS based cocoon cache was introduced as a replacement for jisp [1], we dropped out jisp based cache because the jisp owner changed his license in the newer versions and there were some big flaws in the jisp version used in cocoon. At that time, JCS was not the cache nirvana, but we saw it as a nice fast repleacement, because it was under the same apache umbrella. JCS had some problems too (problems that I don't know if they are already fixed now - but I hope so. One of the problems with JCS is that his community is very small (very few developers - 3 or less), because JCS is the kind of projects that everybody wants to use and nobody wants to develop. You know. ;-)

At the same time ehcache was emerging as a new kid on the cache block. Everybody talked about it, how faster ehcache is and so on. AFAIK, basically ehcache origin is a stripped down forked old version of Apache JCS . Thanks to some cocoon community request, ehcache community agreed to have a dual license using ASF and this allowed us to use his library in cocoon. This is how the ehcache got into cocoon as another cache implementation.

Few cocoon releases ago, due the (memory leaks?) problems in apache jcs base cache, the cocoon community decided to switch to ehcache as our default implementation. As part of the new idea to strip down cocoon to avoid confusing users, the JCS based cache support has been droppped out.

Now, given the current situation, I wonder if was a smart move to remove the jcs cache based cache implementation from cocoon at all. Perhaps we might keep it into our code as another implementation and let the user decide wich one use. Do you think makes sense to ask our community if we can continue supporting jcs-base cache?

I hear there is another very interesting cache implementation. It is called whirlycache[2], but there is no cocoon support yet. Perhaps makes sense to give him a try.** <https://whirlycache.dev.java.net/>

Best Regards,

Antonio Gallardo

[1] http://www.coyotegulch.com/products/jisp/
[2] https://whirlycache.dev.java.net/
Regards Ard
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

Reply via email to