On Mon, Feb 14, 2011 at 14:14, C. Michael Pilato <cmpilato_at_collab.net> wrote:
> On 02/14/2011 01:57 PM, Ivan Zhakov wrote:
>> Hi,
>>
>> Currently ra_serf caches *all* DAV properties retrieved using PROPFIND
>> in session pool. This was attempt to reduce number of PROPFIND
>> requests. But current implementation has several problems:
>> 1. Unlimited memory usage: current implementation stores all
>> properties, so svn ls -R command can easily eat 150 mb of memory.
>> 2. Very low cache hit due the fact that cache doesn't support caching
>> "allprop" requests. For some operations there is no hits at all.
>> 3. Current implementation caches properties that may change between
>> requests, like URL to youngest revision.
>>
>> Of course these problems can be fixed, but I'm not sure that we need
>> this code. Since in svn 1.7 we have HTTPv2 which doesn't use so many
>> PROPFIND requests that we tried to reduce using DAV properties cache.
>>
>> So I'm propose just to remove DAV properties cache from ra_serf.
>> Objections? Comments?
>>
>> PS: See attached patch in case you'd like test performance.
>
> Ivan,
>
> Thanks so much for looking so closely into ra_serf recently! It hadn't
> occurred to me when implementing the HTTPv2 stuff that the prop cache might
> become less useful as a result.
>
> But what is the effect for older servers? Would it make sense keep the
> cache logic, but conditionally use it only for non-HTTPv2 connections?
Note that removing the cache will not *break* the code. It simply
makes operation a bit slower.
"upgrade your server"
Given that we can simplify the client (remove caching), and given that
we can avoid unbounded memory usage, and that we don't really need the
cache... it seems like a win.
Cheers,
-g
Received on 2011-02-15 07:43:14 CET