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

Re: Ev2 alter_directory deltas

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 14 Aug 2013 10:55:44 +0100 (BST)

Philip Martin wrote:

> Another problem with Ev2.  Consider a cheap copy:
>
>   svn cp ^/trunk ^/branches/foo
>
> With Ev1 this commit sends only a small amount of data across the wire.
> This is true even as the number of branches gets large.  In the past
> there was a backend "big directory" storage problem, but that was
> solved
> by enabling directory deltafication.
>
> With Ev2 the "big directory" problem now applies to the network
> transfer.  Adding a child to branches requires an alter_directory call
> with the new list of children, so the old list of children has to be
> sent from the server to the client and then the client has to send it
> back with the new child added.  Very little other data has to be
> transferred.  For big directories transferring the list of children will
> become the bottleneck.
>
> I think alter_directory should be changed to some sort of delta API: one
> list of added children and one list of deleted children.  [Conceivably
> the RA implementation of the current Ev2 API could deltify the list sent
> back by caching the list received but that's horrible and doesn't solve
> the problem of getting the list in the first place.]  I guess we should
> consider doing the same for the list of properties; perhaps with lists
> for added properties, modified properties and deleted properties.

Why is this different from the delta-transmission of file content?  The principle of Ev2 is to describe changes in terms of "the new state is Y" at the API level, and to leave deltification to be arranged between the producer implementation and the consumer implementation.  Why cannot properties be handled this way, and why cannot (or should not) children-lists be handled this way?

- Julian
Received on 2013-08-14 11:56:47 CEST

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