[ 
https://issues.apache.org/jira/browse/KAFKA-6308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jason Gustafson resolved KAFKA-6308.
------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.0.1

Issue resolved by pull request 4293
[https://github.com/apache/kafka/pull/4293]

> Connect: Struct equals/hashCode method should use Arrays#deep* methods
> ----------------------------------------------------------------------
>
>                 Key: KAFKA-6308
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6308
>             Project: Kafka
>          Issue Type: Bug
>          Components: KafkaConnect
>    Affects Versions: 1.0.0
>            Reporter: Tobias Gies
>              Labels: easyfix, newbie
>             Fix For: 1.0.1
>
>
> At the moment, {{org.apache.kafka.connect.data.Struct#equals}} checks two 
> things, after ensuring the incoming {{Object o}} is indeed of the correct 
> type:
> * Whether the schemas of {{this}} and {{o}} are equal, via {{Objects#equals}}
> * Whether the values of {{this}} and {{o}} are qual, via {{Arrays#equals}}.
> The latter check is problematic. {{Arrays#equals}} is meant for 
> one-dimensional arrays of any kind, and thus simply checks the {{equals}} 
> methods of all corresponding elements of its parameters {{a1}} and {{a2}}. 
> However, elements of the {{Struct#values}} array may themselves be arrays in 
> a specific case, namely if a field has a {{BYTES}} Schema Type and the user's 
> input for this field is of type {{byte[]}}.
> Given that, I would suggest to use {{Arrays#deepEquals}} to compare the 
> {{values}} arrays of two {{Struct}} instances. With similar reasoning, I 
> would also suggest to use {{Arrays#deepHashCode}} in the Struct's 
> {{hashCode}} method.
> This would allow to properly compare and hash structs that get byte arrays 
> passed in as field values instead of the recommended ByteBuffers. An 
> alternative might be to automatically wrap byte arrays passed into any 
> {{put}} method in a ByteBuffer.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to