kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KAFKA-3055) JsonConverter mangles schema during serialization (fromConnectData)
Date Fri, 01 Jan 2016 02:05:39 GMT

    [ https://issues.apache.org/jira/browse/KAFKA-3055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15076221#comment-15076221

ASF GitHub Bot commented on KAFKA-3055:

GitHub user ksenji opened a pull request:


    Fix for KAFKA-3055


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ksenji/kafka trunk

Alternatively you can review and apply these changes as the patch at:


To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #722
commit 60a5b5cecd39ccdd4ff2f977a6bfdef123cadb44
Author: ksenji <ksenji@ebay.com>
Date:   2016-01-01T02:01:44Z

    Fix for KAFKA-3055


> JsonConverter mangles schema during serialization (fromConnectData)
> -------------------------------------------------------------------
>                 Key: KAFKA-3055
>                 URL: https://issues.apache.org/jira/browse/KAFKA-3055
>             Project: Kafka
>          Issue Type: Bug
>          Components: copycat
>    Affects Versions:
>            Reporter: Kishore Senji
>            Assignee: Ewen Cheslack-Postava
> Test case is here: https://github.com/ksenji/kafka-connect-test/tree/master/src/test/java/org/apache/kafka/connect/json
> If Caching is disabled, it behaves correctly and JsonConverterWithNoCacheTest runs successfully.
Otherwise the test JsonConverterTest fails.
> The reason is that the JsonConverter has a bug where it mangles the schema as it assigns
all String fields with the same name (and similar for all Int32 fields)
> This is how the schema & payload gets serialized for the Person Struct (with caching
> {code}
> {"schema":{"type":"struct","fields":[{"type":"string","optional":false,"field":"firstName"},{"type":"string","optional":false,"field":"lastName"},{"type":"string","optional":false,"field":"email"},{"type":"int32","optional":false,"field":"age"},{"type":"int32","optional":false,"field":"weightInKgs"}],"optional":false,"name":"Person"},"payload":{"firstName":"Eric","lastName":"Cartman","email":"eric.cartman@southpark.com","age":10,"weightInKgs":40}}
> {code}
> where as when caching is enabled the same Struct gets serialized as (with caching enabled)
> {code}
> {"schema":{"type":"struct","fields":[{"type":"string","optional":false,"field":"email"},{"type":"string","optional":false,"field":"email"},{"type":"string","optional":false,"field":"email"},{"type":"int32","optional":false,"field":"weightInKgs"},{"type":"int32","optional":false,"field":"weightInKgs"}],"optional":false,"name":"Person"},"payload":{"firstName":"Eric","lastName":"Cartman","email":"eric.cartman@southpark.com","age":10,"weightInKgs":40}}
> {code}
> As we can see all String fields became "email" and all int32 fields became "weightInKgs".

This message was sent by Atlassian JIRA

View raw message