Is adding an alias a backwards incompatible change? I have two schemas. I'm
going from V2 to V1 and getting an error that the field is missing. Am I
missing something again?

Here is V1:
{
 "namespace": "model",
 "type": "record",
 "name": "SimpleCard",
 "fields": [
     {
       "name": "suit",
       "type": "string",
       "doc" : "The suit of the card"
     }
 ]
}

Here is V2:
{
 "namespace": "model",
 "type": "record",
 "name": "SimpleCardV2",
 "aliases": ["SimpleCard"],
 "fields": [
     {
       "name": "cardsuit",
       "type": "string",
       "doc" : "The suit of the card",
       "aliases": ["suit"]
     }
 ]
}

Here is the stack trace:
org.apache.avro.AvroTypeException: Found model.SimpleCardV2, expecting
model.SimpleCard, missing required field suit
at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:292)
at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
at
org.apache.avro.io.ResolvingDecoder.readFieldOrder(ResolvingDecoder.java:130)
at
org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:215)
at
org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:175)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:145)

Thanks,

Jesse

Reply via email to