On Fri, Feb 6, 2009 at 4:26 AM, Stian Soiland-Reyes
<[email protected]> wrote:
>
>
> On Feb 5, 1:06 pm, Ben Collins-Sussman <[email protected]> wrote:
>> 1. The svn HTTP protocol is horribly inefficient, due to huge numbers
>> of extra requests that are only done to be 'dav compliant'.  My
>> current 20% project is to rewrite the protocol to be streamlined and
>> as small as possible. We've given up on DAV, as it buys us almost
>> nothing.  I'm doing this work in the public svn codebase, and it
>> should be released to the public by summer.  It should result in
>> overall HTTP speedup for anyone using 1.6 client and servers.
>
> This sounds very interesting, specially since it's done as part of the
> main SVN development.   Would this still be based on http? Some clever
> async REST-like protocol perhaps..?

It's a variation on the existing webdav protocol, but with all of the
fat cut out of it -- no extra network requests which dav requires to
be 'formally correct'.  For details, see
http://svn.collab.net/repos/svn/trunk/notes/http-protocol-v2.txt .
We're about 80% finished.

>
>
>> 2.  The svn client has two optional HTTP client libraries it can use:
>> neon or serf.  Neon is our legacy library, and does *all* HTTP
>> requests synchronously.  But Serf opens 4 connections to the server
>> (just like a web browser does) and parallelizes requests as much as
>> possible.  It's also capable of 'pipelining' requests on a single
>> connection.   In theory, it should be faster than neon, and you can
>> try it out by setting 'http-library=serf' in your
>> ~/.subversion/servers file.
>
> I tried switching, without getting notably speed differences. However,
> your good explanation of your architecture did got me thinking that I
> can do parallel commits.
>
> So with a few for-loops I've now managed to commit all my thousands of
> files and directories. :-)
>
> I had to trick svn a bit to avoid the svn client locking the parent
> directories..
>
>  svn commit --depth empty *
>  for dir in */. ; do svn commit -m "" $a/* & done
>  svn commit -m "" .
>
> and they should not block each other in the for loop.
>
>
> I did run into this now and then, though..
>
> svn: Commit failed (details follow):
> svn: Reference to non-existent node '..' in filesystem 'taverna'
>
>
> Is this a server-side problem? On concurrent commits the error
> disappeared.

Hm, that's odd... I'll have to look into it.


>
>
>> 3.  The native svn protocol spoken to the 'svnserve' server is MUCH
>> faster than HTTP.  Mainly because it's stateful, rather than
>> stateless.  And yes, this protocol definitely pipelines commit
>> requests.  If you want speed, there's absolutely nothing faster than
>> using the svn:// protocol against an svnserve server.
>
> But I guess Google Code is not planning to support this in the near
> future as it's not HTTP-based and probably not as easy to make
> distributed..?

Correct... google's whole infrastructure is designed around HTTP.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Hosting at Google Code" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-code-hosting?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to