You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Balázs Németh (JIRA)" <ji...@apache.org> on 2019/04/01 18:56:00 UTC

[jira] [Created] (BEAM-6963) Bug in RuntimeValueProvider JSON serialization

Balázs Németh created BEAM-6963:
-----------------------------------

             Summary: Bug in RuntimeValueProvider JSON serialization
                 Key: BEAM-6963
                 URL: https://issues.apache.org/jira/browse/BEAM-6963
             Project: Beam
          Issue Type: Bug
          Components: sdk-java-core
    Affects Versions: 2.11.0
            Reporter: Balázs Németh


Classes affected:
org.apache.beam.sdk.options.ValueProvider.Serializer
org.apache.beam.sdk.options.ValueProvider.Deserializer

The problem is that according to the JsonDeserializer documentation, the deserialize method isn't executed for null nodes:
[https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.9.6/com/fasterxml/jackson/databind/JsonDeserializer.html#deserialize(com.fasterxml.jackson.core.JsonParser,%20com.fasterxml.jackson.databind.DeserializationContext)
]"Note that this method is never called for JSON null literal, and thus deserializers need (and should) not check for it."

If we serialize a RuntimeValueProvider, the isAccessible() will return false, so we call a writeNull(). During deserialization this isn't handled properly as mentioned and our deserialization will return null.

The end result is that getters with ValueProvider return values will return "null". AFAIK ValueProvider getters should be never null.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)