[distcc] Proposed distcc protocol change to support caching

Dan Kegel dank at kegel.com
Wed Feb 15 04:24:31 GMT 2006

On 2/14/06, Jake McGuire <jake at boom.net> wrote:
> Summary: Why not aim higher?  Protocol changes happen infrequently,
> or at least they should, so if we can stick in some other stuff that
> we think is going to be useful down the road.

I want this out the door quickly, so I'm trying to do the smallest
possible perturbation of the protocol.

> Details: Why use a binary encoding?

Because that's how distcc is written, and it's easy.

>  Network traffic at this point is
> pretty cheap, especially one-way data, as is the minor amount of CPU
> time to process some text.  Bitfields just add the potential for
> endian screwups and make some sorts of processing more complicated.

The bitfield in question is encoded in hex, and is endian-safe, I think.
(Have *you* read the distcc protocol spec?)

> How about:
> Commands starting with '?' are optional, and require ack/nack.  Like ?
> HSH for hashed source code.
> Commands starting with '+' are optional and should be silently
> ignored if not supported.  Like, say, if someone wanted to make
> distccd report statistics like cache hits, or wanted distcc to flush
> the object cache

a) I use HTTP for reporting statistics
b) I'm not likely to allow flushing the cache via the network
until there's some security in place; until then, it's safe to just
blow away the contents of the cache directory while distcc is running, at
least with my implementation.

> Also... not sure what your build traffic looks like, but it's
> probably worthwhile to put a placeholder in the cache when
> compilation starts so that if there's a "hit" it only gets compiled
> once.

Not sure what you mean.  But during benchmarking of simultaneous
builds on a cold cache, we got better performance if we noticed
simultaneous compile requests for the same source and handled
them nicely, so we do that.
- Dan

Wine for Windows ISVs: http://kegel.com/wine/isv

More information about the distcc mailing list