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

Re: svn commit: r33398 - trunk/notes

From: Justin Erenkrantz <justin_at_erenkrantz.com>
Date: Thu, 2 Oct 2008 09:16:41 -0700

On Thu, Oct 2, 2008 at 8:06 AM, <sussman_at_tigris.org> wrote:
> + XML is out : there's a huge performance penalty for producing and
> + consuming it, which is why companies like Facebook and Google have
> + released 'fast wire serialization' libraries like Thrift and
> + Protocol Buffers. Unfortunately, these libraries require entire
> + structures to be held in memory in order to serialize/deserialze
> + them, and this isn't an option when dealing with something
> + (potentially) infinitely large like an editor-drive.

Then perhaps we should look at improving Thrift parsing to be streamy.
 I'd rather use a library than a custom serialization format - as you
said, one of the goals should be used to make it simpler to
understand. And, one of the ways to do that is to go "Learn Thrift"
rather than read our custom (de)serialization code. =)

> In the list of commands, all commands are assumed to be attached as
> -?cmd=command to GET requests on the repository root URI, with the
> -exception of {commit, ...}, which are attached to POST requests.
> +?cmd=command to the request URI. Command parameters are all
> +query-encoded (&parm=val), and optional parameters are listed in
> +square brackets. Server response values are assumed to be in response
> +bodies.

So, a question is how much we want to push the HTTP envelope. But,
doing query parameters is kinda lame from a performance standpoint.

The diff kinda butchered it, but you had:

---
  get-latest-rev
    GET /repos[/path]?cmd=get-latest-rev
    response: revnum
---
I'd rather see one of the following:
---
GET-LATEST-REV /repos
response: revnum
---
or
---
GET /repos/!svn/get-latest-rev
response: revnum
---
(I sort of prefer the latter, but could be convinced the former works too.)
I think that args should be explicit in the URLs rather than then
query strings, so get-dated-rev could be:
---
GET /repos/!svn/get-dated-rev/<ISO date string>
response: revnum
---
Also:
---
  rev-proplist
    GET /repos[/path]?cmd=rev-proplist&rev=num
    response:  proplist
---
could be:
---
GET /repos/!svn/<revnum>/props/rev
response: proplist
---
etc, etc, etc.
My $.02.  -- justin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-02 18:16:56 CEST

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