[ https://issues.apache.org/jira/browse/KAFKA-554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13591984#comment-13591984 ]
Jun Rao commented on KAFKA-554: ------------------------------- Thanks for patch v1. Looks good overall. Some comments: 1. TopicCommand: Some options are only available for certain actions. Should we explain that in the description of those options? 2. AdminUtils: 2.1 comment: "is there is any" => "if there is any" 2.2 We have standardized non-singleton values in ZK to JSON. Should the values stored in the topic config path be JSON too? 3. TopicConfigManager: 3.1 add the missing > in the following comment. * /brokers/topics/<topic_name/config 3.2 startup(): It seems there is no need to make sure TopicConfigChangesPath exists here since that's covered in initZk() in KafkaServer.startup(). 3.3 processConfigChanges(): 3.3.1 How about using "processing config change notifications" in the following logging to make it more specific. info("Processing %d change notifications...".format(notifications.size)) 3.3.2 Reading the config from ZK can be done only if changeId > lastExecutedChange 3.3.3 Not sure why we don't delete the sequential node corresponding to lastChangeId from ZK. 3.3.4 It seems that sequential nodes under /brokers/config_changes are only deleted when there is a new config change. So, they are not always deleted after the configured expiration time. 3.4. ConfigChangeListener.handleChildChange(): chillins are obtained from zk.getChildren(). There is no guarantee that the list is sorted. So, you will need to sort it yourself since ordering is important here. 4. KafkaApis.handleOffsetCommitRequest(): The following statements val responseInfo = offsetCommitRequest.requestInfo.map( t => { val (topicAndPartition, metadataAndError) = t can be simplified to val responseInfo = offsetCommitRequest.requestInfo.map( case (topicAndPartition, metadataAndError) => { 5. LogConfig: Can we define the two retentionPolicies "delete" and "dedupe" as contants and reuse them in LogConfig and KafkaConfig? 6. RequestKeys: ModifyTopicKey is not used. 7. ZkUtils: remove the following unused imports import java.util.Properties import java.io.{StringReader, StringWriter} 8. PrimitiveApiTest: Instead of commenting out the following lines, should we just remove them? // temporarily set request handler logger to a higher level //requestHandlerLogger.setLevel(Level.FATAL) 9. ReplicaFetchTest.logsMatch(): tandp is a bit confusing. Could we rename it to topicAndPart? The patch needs to be rebased. Some of the changes are no longer necessary after the patch that standardizes the ZK paths/values. > Move all per-topic configuration into ZK and add to the CreateTopicCommand > -------------------------------------------------------------------------- > > Key: KAFKA-554 > URL: https://issues.apache.org/jira/browse/KAFKA-554 > Project: Kafka > Issue Type: New Feature > Reporter: Jay Kreps > Labels: project > Fix For: 0.8.1 > > Attachments: KAFKA-554-v1.patch > > > We have a number of per-topic configurations that control message retention > and flush interval. Here is the list of properties I find in KafkaConfig that > appear to be per-topic: > topic.log.file.size > topic.log.roll.hours > topic.log.retention.hours > topic.log.retention.size > topic.flush.intervals.ms > Currently we specify these in server.properties. This is not a good solution > as it requires a rolling bounce of the cluster to make a change, which just > doesn't scale to having hundreds of topics. Also the map encoded in a CSV > string is kind of hacky. > We should move these into ZK in some kind of JSON blob that allows easily > adding new per-topic configs and we should remove these from > server.properties. > It would be good to start with a wiki design and get consensus on that first. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira