Randall Hauch created KAFKA-3804:
------------------------------------
Summary: Kafka Connect's Struct objects rehydrated with JSON
converter are not equal
Key: KAFKA-3804
URL: https://issues.apache.org/jira/browse/KAFKA-3804
Project: Kafka
Issue Type: Bug
Components: KafkaConnect
Affects Versions: 0.10.0.0
Reporter: Randall Hauch
Assignee: Ewen Cheslack-Postava
The {{equals(...)}} method on {{org.apache.kafka.connect.data.Struct}}
currently uses {{Arrays.equals(value,o.value)}} to compare the array of field
values to that of another. However, this only works when the elements in those
arrays (e.g., the field values) are primitives or objects, but fails to work
when they are arrays such as {{byte[]}}.
Interestingly, the {{StructTest}} unit test populates all fields of type
{{Schema.BYTES_SCHEMA}} using {{ByteBuffer}} object, which means the current
logic works fine. However, the JSON converter rehydrates the {{Struct}} objects
using {{byte[]}}, whereas the Avro converter rehydrates using {{ByteBuffer}}.
This means that when a {{Struct}} containing a {{Schema.BYTES_SCHEMA}} or
{{Schema.OPTIONAL_BYTES_SCHEMA}} field is serialized and then deserialized with
the JSON converter, the rehydrated object will not be deemed "equal" to the
original.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)