func (this *Topics) resetTopicConfig(zkcluster *zk.ZkCluster, topic string) { zkAddrs := zkcluster.ZkConnectAddr() key := "retention.ms" cmd := pipestream.New(fmt.Sprintf("%s/bin/kafka-topics.sh", ctx.KafkaHome()), fmt.Sprintf("--zookeeper %s", zkAddrs), fmt.Sprintf("--alter"), fmt.Sprintf("--topic %s", topic), fmt.Sprintf("--deleteConfig %s", key), ) err := cmd.Open() swallow(err) defer cmd.Close() scanner := bufio.NewScanner(cmd.Reader()) scanner.Split(bufio.ScanLines) output := make([]string, 0) for scanner.Scan() { output = append(output, scanner.Text()) } swallow(scanner.Err()) path := zkcluster.GetTopicConfigPath(topic) this.Ui.Info(path) for _, line := range output { this.Ui.Output(line) } }
func (this *Topics) configTopic(zkcluster *zk.ZkCluster, topic string, retentionInMinute int) { /* val SegmentBytesProp = "segment.bytes" val SegmentMsProp = "segment.ms" val SegmentIndexBytesProp = "segment.index.bytes" val FlushMessagesProp = "flush.messages" val FlushMsProp = "flush.ms" val RetentionBytesProp = "retention.bytes" val RententionMsProp = "retention.ms" val MaxMessageBytesProp = "max.message.bytes" val IndexIntervalBytesProp = "index.interval.bytes" val DeleteRetentionMsProp = "delete.retention.ms" val FileDeleteDelayMsProp = "file.delete.delay.ms" val MinCleanableDirtyRatioProp = "min.cleanable.dirty.ratio" val CleanupPolicyProp = "cleanup.policy" */ // ./bin/kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic foobar --config max.message.bytes=10000101 // zk: {"version":1,"config":{"index.interval.bytes":"10000101","max.message.bytes":"10000101"}} if retentionInMinute < 10 { panic("less than 10 minutes?") } ts := sla.DefaultSla() ts.RetentionHours = float64(retentionInMinute) / 60 output, err := zkcluster.AlterTopic(topic, ts) if err != nil { this.Ui.Error(fmt.Sprintf("%+v: %v", ts, err)) os.Exit(1) } path := zkcluster.GetTopicConfigPath(topic) this.Ui.Info(path) for _, line := range output { this.Ui.Output(line) } }