Description
Using the GenericDatumWriter with either Generic OR SpecificRecord will break if an Enum is present.
I have been tracking Avro decoding oddities for a while.
The tests for this issue can be found here
Due to the debacle that is the Avro "UTF8" object, we have been avoiding it by using the following scheme:
- Write incoming records to a byte array using the GenericDatumWriter
- Read back the byte array to our compiled Java domain objects using a SpecificDatumWriter
This worked great with Avro 1.7.7, and this is a binary-incompatable breaking change with 1.8.0.
This would appear to be caused by an addition in the GenericDatumWriter:163-164:
if (!data.isEnum(datum)) throw new AvroTypeException("Not an enum: "+datum);
Attachments
Issue Links
- relates to
-
AVRO-1870 Avro compiler generate JAVA enum interfaces but writeEnum expects GenericEnumSymbol
- Open
- links to