On Thu, Nov 6, 2008 at 12:33 PM, Paul Lindner <[EMAIL PROTECTED]> wrote:

> I can attest that the ehcache implementation holds up in production usage.


Indeed. It seems to me that there's no reason not to pull this in. I'll get
a patch going now.


>
>
> On Nov 6, 2008, at 12:23 PM, Kevin Brown wrote:
>
>  Actually, we should probably just get rid of the LRU cache here (the real
>> culprit) and make everything use EH cache.  I don't see any strong reason
>> not to -- the cache provider can be changed to simply *always* use named
>> instances, which certainly simplifies things.
>>
>> Ian, you wrote the ehcache implementation. Do you have any strong opinions
>> here?
>>
>> On Thu, Nov 6, 2008 at 9:51 AM, Kevin Brown <[EMAIL PROTECTED]> wrote:
>>
>>  By convention, Basic* are not considered production worthy. For the HTTP
>>> cache, I'd never use a pure in memory solution, and through ehcache
>>> configuration you should be able to wire something more robust fairly
>>> easily.
>>>
>>> We can probably make this class thread safe anyway though. If we're
>>> really
>>> worried about performance, a ReadWriteLock would probably do the trick.
>>>
>>>
>>> On Thu, Nov 6, 2008 at 9:26 AM, Marijn Speelman <[EMAIL PROTECTED]> wrote:
>>>
>>>  Hi,
>>>>
>>>> The default BasicHttpCache is using an unsychronized LinkedHashMap which
>>>> can cause very strange problems when it has multiple threads talking to
>>>> it. We've been using this class in combination with a memcached backend
>>>> (when the http response is not in the in-memory cache we retrieve it
>>>> from our main memcached pool).
>>>>
>>>> The problem that appears after a while is that the max capacity of the
>>>> LRU cache is not being respected, eventually resulting in an OOM error
>>>> after a day or two (with about 88,000 cached objects while our max
>>>> capacity was set to 10,000).
>>>>
>>>> I know it says 'Basic' but I expected it to be simple, not 'unsuited for
>>>> production' :) For now I just made the three functions (add,get,remove)
>>>> synchronized, which of course results in a performance penalty but as it
>>>> seems, not a significant one (especially compared to a server leaking
>>>> memory ;)).
>>>>
>>>> The reason why we used the BasicHttpCache and for instance not ehcache
>>>> is that it was just what we needed (a really really simple in-memory
>>>> cache), and we're still using an older shindig version of around May
>>>> that didn't have ehcache in it yet.
>>>>
>>>> I suggest making the BasicHttpCache thread safe, or at least adding a
>>>> comment to warn people that it's not suited for production for this
>>>> reason (but then again, making it thread safe but slower is probably
>>>> fine for non-production as well). Or was I just silly for using this in
>>>> a production environment? :) I find it quite hard to tell what exactly
>>>> is production ready in Shindig, and what is just a sample implementation
>>>> you should never really use. Is there some documentation on this
>>>> (configure this, create a better class instead of class X that supports
>>>> this and that)?
>>>>
>>>> Marijn
>>>>
>>>>
>>>
>>>
> Paul Lindner
> [EMAIL PROTECTED]
>
>
>
>

Reply via email to