Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.7.6
-
None
Description
Actual behaviour:
I have a field in my reflection-based schema like this:
@Nullable @AvroDefault("null") public Long someField;
When removing this field, parsing the previous serialized blob yields NullPointerException:
java.lang.NullPointerException at org.apache.avro.reflect.ReflectData.setField(ReflectData.java:128) at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193) at org.apache.avro.reflect.ReflectDatumReader.readField(ReflectDatumReader.java:230) at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142) at org.apache.avro.file.DataFileStream.next(DataFileStream.java:233) at org.apache.avro.file.DataFileStream.next(DataFileStream.java:220) at ReflectDataFieldRemovalTest.testFieldRemoval(ReflectDataFieldRemovalTest.java:41)
Expected behaviour:
Field removal is crucial for schema evolution and must be possible with ReflectData.