Randall Hauch created KAFKA-4183: ------------------------------------ Summary: Logical converters in JsonConverter don't properly handle null values Key: KAFKA-4183 URL: https://issues.apache.org/jira/browse/KAFKA-4183 Project: Kafka Issue Type: Bug Components: KafkaConnect Affects Versions: 0.10.0.1 Reporter: Randall Hauch Assignee: Ewen Cheslack-Postava
The {{JsonConverter.TO_CONNECT_LOGICAL_CONVERTERS}} map contains {{LogicalTypeConverter}} implementations to convert from the raw value into the corresponding logical type value, and they are used during deserialization of message keys and/or values. However, these implementations do not handle the case when the input raw value is null, which can happen when a key or value has a schema that is or contains a field that is _optional_. Consider a Kafka Connect schema of type STRUCT that contains a field "date" with an optional schema of type {{org.apache.kafka.connect.data.Date}}. When the key or value with this schema contains a null "date" field and is serialized, the logical serializer properly will serialize the null value. However, upon _deserialization_, the {{JsonConverter.TO_CONNECT_LOGICAL_CONVERTERS}} are used to convert the literal value (which is null) to a logical value. All of the {{JsonConverter.TO_CONNECT_LOGICAL_CONVERTERS}} implementations will throw a NullPointerException when the input value is null. For example: {code:java} java.lang.NullPointerException at org.apache.kafka.connect.json.JsonConverter$14.convert(JsonConverter.java:224) at org.apache.kafka.connect.json.JsonConverter.convertToConnect(JsonConverter.java:731) at org.apache.kafka.connect.json.JsonConverter.access$100(JsonConverter.java:53) at org.apache.kafka.connect.json.JsonConverter$12.convert(JsonConverter.java:200) at org.apache.kafka.connect.json.JsonConverter.convertToConnect(JsonConverter.java:727) at org.apache.kafka.connect.json.JsonConverter.jsonToConnect(JsonConverter.java:354) at org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:343) {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)