kafka-jira mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Randall Hauch (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KAFKA-6168) Connect Schema comparison is slow for large schemas
Date Sat, 04 Nov 2017 01:56:00 GMT

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

Randall Hauch commented on KAFKA-6168:

[~yuzhihong@gmail.com], thanks for offering to work on this. I think the first step would
be to create a PR with a commit that has the changes you attached as a patch, and then we
can look into possibly doing something about improving the performance of {{equals}}. 

> Connect Schema comparison is slow for large schemas
> ---------------------------------------------------
>                 Key: KAFKA-6168
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6168
>             Project: Kafka
>          Issue Type: Improvement
>          Components: KafkaConnect
>    Affects Versions: 1.0.0
>            Reporter: Randall Hauch
>            Assignee: Ted Yu
>            Priority: Critical
>         Attachments: 6168.v1.txt
> The {{ConnectSchema}} implementation computes the hash code every time its needed, and
{{equals(Object)}} is a deep equality check. This extra work can be expensive for large schemas,
especially in code like the {{AvroConverter}} (or rather {{AvroData}} in the converter) that
uses instances as keys in a hash map that then requires significant use of {{hashCode}} and
> The {{ConnectSchema}} is an immutable object and should at a minimum precompute the hash
code. Also, the order that the fields are compared in {{equals(...)}} should use the cheapest
comparisons first (e.g., the {{name}} field is one of the _last_ fields to be checked). Finally,
it might be worth considering having each instance precompute and cache a string or byte[]
representation of all fields that can be used for faster equality checking.

This message was sent by Atlassian JIRA

View raw message