Ryan Skraba created BEAM-12628:
----------------------------------

             Summary: AvroCoder changed underlying String class for 
SpecificRecords
                 Key: BEAM-12628
                 URL: https://issues.apache.org/jira/browse/BEAM-12628
             Project: Beam
          Issue Type: Bug
          Components: io-java-avro
    Affects Versions: 2.30.0
            Reporter: Ryan Skraba


The AvroCoder changes for BEAM-2303 changes the reader/writer from the Avro 
{{ReflectDatum*}} classes to the {{SpecificDatum*}} classes.

Because of the way Avro handles Strings, however, the underlying instances for 
String data are deserialised as {{org.apache.avro.util.Utf8}} instances instead 
of {{java.lang.String}}.

This causes:
1. an unexpected behaviour change when migrating to Beam 2.30.0
2. potential serialization issues when using these String instances (Utf8 
instances don't implement Serializable)
3. an inconsistent API between {{AvroCoder}} and {{AvroSink}}/{{AvroSource}} 
(the latter still use {{ReflectDatum*}})

(Original report on the [mailing 
list|https://lists.apache.org/x/thread.html/r5d0b975926cc4761f025ecd8df58a31e3f99e522296cc47d82ed5943@%3Cdev.beam.apache.org%3E]
 and [PR|https://github.com/apache/beam/pull/14410#issuecomment-880838488])




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to