FasterXML / jackson-dataformats-binary

Uber-project for standard Jackson binary format backends: avro, cbor, ion, protobuf, smile
Apache License 2.0
310 stars 133 forks source link

Invalid Union index (17); union only has 2 types #164

Open iNikem opened 5 years ago

iNikem commented 5 years ago

I believe this is a different issue from #123.

Please see the project attached. Running ./gradlew run demonstrates the failure.

We have a binary avro file serialised by Jackson. We have a writer schema in a separate file, which describes the class which was serialised. Next we have a reader schema with one of the fields from that class removed. In my actual project we have removed some fields from the class and updated a schema to be able to deserialised older data while ignoring removed fields. Unfortunately removing some fields from reader schema fails deserialisation.

The correct behaviour, as far as I understand it, should be to ignore fields which are not present in the reader schema.

avro.zip

cowtowncoder commented 5 years ago

Sounds like a bug, thank you for reporting this. I hope to look into it relatively soon (there's bit of a backlog).

cowtowncoder commented 5 years ago

I can reproduce this problem, added failing unit test. I suspect this is due to a problem in updating state after "missing" long field is skipped (or, likely, is not and should be skipped).

wincentzzz commented 3 years ago

Hello, any updates for this issue?

cowtowncoder commented 3 years ago

@wincentzzz No. The usual practice is to add a note on issue if there are updates.