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.
Received on 2013-08-14 10:58:22 CEST