[ https://issues.apache.org/jira/browse/KAFKA-686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14125015#comment-14125015 ]
Viktor Taranenko commented on KAFKA-686: ---------------------------------------- [~guozhang] I've put initial changeset on reviewboard. https://reviews.apache.org/r/25420/diff/ It contains some code refactoring to centralise getting and parsing data from ZK and implementation of shutting down the controller when it receives invalid topic exception while trying to sync with new topics. I would to get initial feedback if that is the behaviour you would expect or I'm missing something. If everything is fine so far, I will continue working on it this week. Thanks > 0.8 Kafka broker should give a better error message when running against 0.7 > zookeeper > -------------------------------------------------------------------------------------- > > Key: KAFKA-686 > URL: https://issues.apache.org/jira/browse/KAFKA-686 > Project: Kafka > Issue Type: Bug > Affects Versions: 0.8.0 > Reporter: Jay Kreps > Priority: Blocker > Labels: newbie, patch > Fix For: 0.8.2 > > Attachments: KAFAK-686-null-pointer-fix.patch, > KAFKA-686-null-pointer-fix-2.patch > > > People will not know that the zookeeper paths are not compatible. When you > try to start the 0.8 broker pointed at a 0.7 zookeeper you get a > NullPointerException. We should detect this and give a more sane error. > Error: > kafka.common.KafkaException: Can't parse json string: null > at kafka.utils.Json$.liftedTree1$1(Json.scala:20) > at kafka.utils.Json$.parseFull(Json.scala:16) > at > kafka.utils.ZkUtils$$anonfun$getReplicaAssignmentForTopics$2.apply(ZkUtils.scala:498) > at > kafka.utils.ZkUtils$$anonfun$getReplicaAssignmentForTopics$2.apply(ZkUtils.scala:494) > at > scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61) > at scala.collection.immutable.List.foreach(List.scala:45) > at > kafka.utils.ZkUtils$.getReplicaAssignmentForTopics(ZkUtils.scala:494) > at > kafka.controller.KafkaController.initializeControllerContext(KafkaController.scala:446) > at > kafka.controller.KafkaController.onControllerFailover(KafkaController.scala:220) > at > kafka.controller.KafkaController$$anonfun$1.apply$mcV$sp(KafkaController.scala:85) > at > kafka.server.ZookeeperLeaderElector.elect(ZookeeperLeaderElector.scala:53) > at > kafka.server.ZookeeperLeaderElector.startup(ZookeeperLeaderElector.scala:43) > at kafka.controller.KafkaController.startup(KafkaController.scala:381) > at kafka.server.KafkaServer.startup(KafkaServer.scala:90) > at > kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:34) > at kafka.Kafka$.main(Kafka.scala:46) > at kafka.Kafka.main(Kafka.scala) > Caused by: java.lang.NullPointerException > at > scala.util.parsing.combinator.lexical.Scanners$Scanner.<init>(Scanners.scala:52) > at scala.util.parsing.json.JSON$.parseRaw(JSON.scala:71) > at scala.util.parsing.json.JSON$.parseFull(JSON.scala:85) > at kafka.utils.Json$.liftedTree1$1(Json.scala:17) > ... 16 more -- This message was sent by Atlassian JIRA (v6.3.4#6332)