avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug Cutting <cutt...@apache.org>
Subject Re: how to handle schema changes in RPC? (RPC version support)
Date Thu, 26 May 2011 09:20:25 GMT
I believe this is already supported by Avro, as described in my previous


On 05/25/2011 08:15 PM, Yang wrote:
> generally schema/method signature changes are unavoidable in a real
> production system.
> so once I setup an avro RPC server, what is the best strategy to
> handle such cases?
> one way I thought about is  to put all the params of my RPC into a
> single record , and encode that record into
> a byte array, and the nominal signature of the RPC is just MyMethod(
> byteArray param, int version );
> on the receiving side, I lookup the schema from the "version" field,
> and parse out the record using expected versions and
> incoming version. the incoming version can be and old schema, so we
> achieve backward-compatibility.
> of course all the above can be built into RPC directly, so that we do
> not have to do this manual encoding and decoding.
> but there is one small problem left: if the old schema and new schema
> both contain a record field, but the record field schema also
> changed, currently it can not resolve. but I think this can be modified
> the other way I guess is, when you update your schema, and publish new
> API, you keep the old server running, and setup the new server
> on a different port, or host; then you have to tell all your users to
> migrate to the new server.
> I'm sure you have encountered the schema changes problem in
> production, how do you handle this?
> thanks
> Yang

View raw message