[ https://issues.apache.org/jira/browse/KAFKA-2198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14550352#comment-14550352 ]
Bob Halley commented on KAFKA-2198: ----------------------------------- I realize that the chroot path is optional, but it's still a bug that the command does nothing. The request is to alter an existing topic, but there is no such topic. It makes no changes to zookeeper and exits with status 0. A better error would be "no Kafka configuration in directory /" or "topic 'foo' not found in '/config/topics'". > kafka-topics.sh exits with 0 status on failures > ----------------------------------------------- > > Key: KAFKA-2198 > URL: https://issues.apache.org/jira/browse/KAFKA-2198 > Project: Kafka > Issue Type: Bug > Components: admin > Affects Versions: 0.8.2.1 > Reporter: Bob Halley > Assignee: Manikumar Reddy > Attachments: KAFKA-2198.patch > > > In the two failure cases below, kafka-topics.sh exits with status 0. You > shouldn't need to parse output from the command to know if it failed or not. > Case 1: Forgetting to add Kafka zookeeper chroot path to zookeeper spec > $ kafka-topics.sh --alter --topic foo --config min.insync.replicas=2 > --zookeeper 10.0.0.1 && echo succeeded > succeeded > Case 2: Bad config option. (Also, do we really need the java backtrace? > It's a lot of noise most of the time.) > $ kafka-topics.sh --alter --topic foo --config min.insync.replicasTYPO=2 > --zookeeper 10.0.0.1/kafka && echo succeeded > Error while executing topic command requirement failed: Unknown configuration > "min.insync.replicasTYPO". > java.lang.IllegalArgumentException: requirement failed: Unknown configuration > "min.insync.replicasTYPO". > at scala.Predef$.require(Predef.scala:233) > at kafka.log.LogConfig$$anonfun$validateNames$1.apply(LogConfig.scala:183) > at kafka.log.LogConfig$$anonfun$validateNames$1.apply(LogConfig.scala:182) > at scala.collection.Iterator$class.foreach(Iterator.scala:727) > at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) > at kafka.log.LogConfig$.validateNames(LogConfig.scala:182) > at kafka.log.LogConfig$.validate(LogConfig.scala:190) > at > kafka.admin.TopicCommand$.parseTopicConfigsToBeAdded(TopicCommand.scala:205) > at > kafka.admin.TopicCommand$$anonfun$alterTopic$1.apply(TopicCommand.scala:103) > at > kafka.admin.TopicCommand$$anonfun$alterTopic$1.apply(TopicCommand.scala:100) > at > scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) > at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) > at kafka.admin.TopicCommand$.alterTopic(TopicCommand.scala:100) > at kafka.admin.TopicCommand$.main(TopicCommand.scala:57) > at kafka.admin.TopicCommand.main(TopicCommand.scala) > succeeded -- This message was sent by Atlassian JIRA (v6.3.4#6332)