[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: testing DAV PROPFIND capabilities efficiently in r18513

From: Kazutoshi Satoda <k_satoda_at_f2.dion.ne.jp>
Date: 2006-03-07 00:49:37 CET

kfogel@collab.net wrote:
> The log message for r18513 (which resolved issue #2151, "'svn ls' is
> slow over ra_dav") makes me wonder something:
>
>> ------------------------------------------------------------------------
>> r18513 | rooneg | 2006-02-17 17:52:54 -0600 (Fri, 17 Feb 2006) | 45 lines
>>
>> Fix for issue 2151 "'svn ls' is slow over ra_dav"
>>
>> This patch implements a solution to issue 2151. We now only request
>> the needed props in the PROPFIND for server listings. 'svn ls' is now
>> noticably faster. In most cases 'ls' takes about half the time and half
>> the bandwidth - In some case even better results.
>>
>> For backward compatibility, before doing the long PROPFIND we make
>> another simpler PROPFIND to see if the server supports the new type of
>> request (supports the deadprop-count prop). If it does we use the new
>> scheme and performance is improved - If not then we use the old scheme
>> and the slowness persists.
>
> Instead of adding an unconditional extra turnaround, why not just
> issue the request we want right away, and see if it succeeds or not?
> If it doesn't, we can just fall back to the old behavior.
>
> I might dig deeper if I get time, but before I go down that road, does
> anyone know off the top of their head why the usual try-then-fall-back
> strategy wouldn't work in this case? Its advantage is that it only
> does the extra network turnaround in the legacy case.

Without the extra request, we can see that the server does not support
deadprop-count only after fetching properties for all dirent_fields except
SVN_DIRENT_HAS_PROPS. In the legacy case, we need extra depth 1 allprop
request for SVN_DIRENT_HAS_PROPS. I think that such request will be very
redundant because there is no way to request allprops except we have
already fetched.

The extra request tests a server capability, not an actual value to fill
some dirent field. It might be done by checking the server version, but
I don't know whether it is possible or not.

I thought to combine the extra request with the last 'if(props)' part.
But I didn't do that to minimize the change to the previous patch.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Mar 7 00:50:04 2006

This is an archived mail posted to the Subversion Dev mailing list.