The RPC handshake was designed to be tolerant of differences in the protocol hashing method. The java implementation uses MD5 of the protocol's un-normalized text. This could result in the needless transmission over the wire of protocols that only differ in trivial ways, but since clients and servers cache these, they should't be transmitted often.
A server should cache a client's protocol using the client-computed hash as key. So if two clients hash schemas differently then the server will end up with two entries in its cache. This permits variation in implementation (intentional or not). Does that help? Doug On Sun, Mar 17, 2013 at 9:16 PM, Connor Doyle <[email protected]> wrote: > I've started working on a reflective Avro library for the Scala programming > language. > > The description of Parsing Canonical Form is clear enough for schemas, but I > can't seem to find any mention of prescribed ordering of the "types" field > for protocol definitions in the current specification. I've based my first > pass on forward declarations elimination, but this gives only a partial > order. > > In the absence of spec I can base behavior on the reference (Java) > implementation, but am curious about this aspect of the handshake. > -- > Connor >
