Hi Andy, https://issues.apache.org/jira/browse/AVRO-2780 is a separate but more critical issue, while the question I am asking in this thread is more of a convenience.
Thank you On Wed, Mar 25, 2020 at 5:44 PM Andy Le <[email protected]> wrote: > Is this related to your issue > https://issues.apache.org/jira/browse/AVRO-2780 ? > > On 2020/03/25 22:58:42, Tianyu Lang <[email protected]> wrote: > > Hello, > > > > I am doing a Java prototype where the publisher converts Protobuf objects > > into Avro records to send to a stream, then the consumer deserializes > them > > back into Protobuf objects. The Protobuf schemas on the publisher and > > consumer are the "source of truth" schemas, and I use "Schema schema = > > ProtobufData.get().getSchema(MyProtobufClass.class);" to get the > > corresponding Avro schema to convert back and forth. > > However, one problem I encountered is: the Avro schema resulted from this > > method does not have a default value for repeated (array) Protobuf > fields. > > This is causing compatibility issues for me: if I update the consumer > > schema first by adding a new repeated Protobuf field, the generated Avro > > schema cannot handle old messages without this field, as it does not > have a > > default value to fill in for the new array field. > > I can probably work around this by traversing the Avro Schema object and > > add a default value for all the array fields, but this feels a bit > clumsy. > > > > Is there a better way to do this? > > Also, what's the reason behind having no default values for array field? > > (Am I going into compatibility edge cases by forcing default values on > > array fields?) > > > > Thank you > > >
