The email subject should have been "Alias with Forward Compatibility." Are
using aliases forward incompatible? I'm using Avro 1.8.2.

Using Hotels.com's Avro compatibility checker, I get:
com.hotels.avro.compatibility.SchemaCompatibilityException: Compatibility
type 'CAN_BE_READ_BY' does not hold between 1 schema(s) in the chronology
because: Schema[0] has incompatibilities: ['NAME_MISMATCH: expected:
model.SimpleCardV2' at '/name','READER_FIELD_MISSING_DEFAULT_VALUE: suit'
at '/fields/0'].

Thanks,

Jesse

On Fri, Oct 19, 2018 at 4:17 PM Jesse Anderson <[email protected]>
wrote:

> 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