You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/01/24 20:27:26 UTC

[jira] [Commented] (KAFKA-4687) InvalidTopicException is possible for topic colliding with itself when concurrently created

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

ASF GitHub Bot commented on KAFKA-4687:
---------------------------------------

Github user asfgit closed the pull request at:

    https://github.com/apache/kafka/pull/2425


> InvalidTopicException is possible for topic colliding with itself when concurrently created
> -------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-4687
>                 URL: https://issues.apache.org/jira/browse/KAFKA-4687
>             Project: Kafka
>          Issue Type: Bug
>          Components: admin
>    Affects Versions: 0.9.0.0
>            Reporter: Andrew Olson
>            Assignee: Andrew Olson
>             Fix For: 0.10.2.0
>
>
> In our system we programmatically create the topic when data is first received from a data source prior to producing messages to that topic. Our Kafka producers run in a highly concurrent distributed environment (Storm), such that when a data feed is first enabled there may be multiple Storm bolt processes competing to create the topic. Occasionally, we see an InvalidTopicException for a topic colliding with itself due to a race condition where the initial zkUtils.zkClient.exists(topic) check returns false, but the subsequent zkUtils.getAllTopics() call includes the topic.
> Example stack trace,
> {noformat}
> Caused by: kafka.common.InvalidTopicException: Topic "DATA.7b3fbbd4-4ecd-4521-aed4-0ccca371e573" collides with existing topics: DATA.7b3fbbd4-4ecd-4521-aed4-0ccca371e573
> 	at kafka.admin.AdminUtils$.createOrUpdateTopicPartitionAssignmentPathInZK(AdminUtils.scala:258) ~[stormjar.jar:?]
> 	at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:237) ~[stormjar.jar:?]
> 	at kafka.admin.AdminUtils.createTopic(AdminUtils.scala) ~[stormjar.jar:?]
> {noformat}
> To fix this I believe we just need to update the {{Topic#hasCollision}} method to disallow a topic from having a collision with itself (as KAFKA-2337 clearly did not intend for that condition to ever be possible), like this:
> {noformat}
> def hasCollision(topicA: String, topicB: String): Boolean = {
>   topicA != topicB && topicA.replace('.', '_') == topicB.replace('.', '_')
> }
> {noformat}
> This bug affects version 0.9.0.0 and higher.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)