Amit Sela commented on BEAM-626:

[~dhalp...@google.com] the thread safety issues you mention are what you 
suspect as described in BEAM-318 ?

While the Spark runner could register the AvroCoder to use JavaSerializer 
(though we'll have to make the proxy inner class public), [~aviemzur] has a 
valid point about the AvroCoder using writeReplace and readResolve. WDYT ?

> AvroCoder not deserializing correctly in Kryo
> ---------------------------------------------
>                 Key: BEAM-626
>                 URL: https://issues.apache.org/jira/browse/BEAM-626
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-core
>            Reporter: Aviem Zur
>            Assignee: Davor Bonaci
>            Priority: Minor
> Unlike with Java serialization, when deserializing AvroCoder using Kryo, the 
> resulting AvroCoder is missing all of its transient fields.
> The reason it works with Java serialization is because of the usage of 
> writeReplace and readResolve, which Kryo does not adhere to.
> In ProtoCoder for example there are also unserializable members, the way it 
> is solved there is lazy initializing these members via their getters, so they 
> are initialized in the deserialized object on first call to the member.
> It seems AvroCoder is the only class in Beam to use writeReplace convention.

This message was sent by Atlassian JIRA

Reply via email to