[ 
https://issues.apache.org/jira/browse/KAFKA-21421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sean Quah updated KAFKA-21421:
------------------------------
    Description: 
Discovered by [~xvrl]
h2. Claude analysis:

Rows 1 and 2 appear under both Topic and Broker because {{getTopicConfig}} 
falls back to the cluster and broker-level configs, in 
{{{}ConfigurationControlManager.java:660-664{}}}.
h3. Topic configs
||#||Site||Config||Effect of a padded value||
|1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|{{NumberFormatException}}
 makes the controller fail over, and the next controller hits the same value.|
|2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|{{"
 true"}} is read as {{{}false{}}}, so the controller silently skips unclean 
election.|
|3|{{LogConfig.java:556}}|existing {{remote.storage.enable}}|{{" true"}} is 
read as {{{}false{}}}, so the checks for turning off remote storage are 
skipped.|
|7|{{InternalTopicManager.java:324, 363, 389}}|{{{}retention.ms{}}}, 
{{min.compaction.lag.ms}} read back from the broker|Streams internal topic 
validation throws.|
|8|{{TopicCommand.java:315}}|{{min.insync.replicas}} read back from the 
broker|{{\-\-under-min-isr-partitions}} and {{\-\-at-min-isr-partitions}} 
throw.|
h3. Broker configs (cluster default or per-broker)
||#||Site||Config||Effect of a padded value||
|1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|The effect 
is the same as for the topic config.|
|2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|The
 effect is the same as for the topic config.|
|5|{{GroupCoordinatorConfig.java:858}}|{{{}group.consumer.assignment.interval.ms{}}},
 {{{}group.share.assignment.interval.ms{}}}, 
{{group.streams.assignment.interval.ms}}|A parse failure blocks every dynamic 
broker config update. A trailing space in server.properties also triggers it.|
|6|{{ConfigHandler.scala:159, 161}}|{{{}leader.replication.throttled.rate{}}}, 
{{{}follower.replication.throttled.rate{}}}, 
{{replica.alter.log.dirs.io.max.bytes.per.second}}|Replication quotas aren't 
updated.|
h3. Group configs
||#||Site||Config||Effect of a padded value||
|4|{{GroupConfig.java:959, 960, 989, 1021, 1048}}|int group configs, such as 
{{consumer.session.timeout.ms}}|Every broker throws, so the group's overrides 
are never applied.|
h3. Streams client configs
||#||Site||Config||Effect of a padded value||
|7|{{InternalTopicManager.java:327, 366}}|{{{}topic.retention.ms{}}}, 
{{topic.min.compaction.lag.ms}}|Streams internal topic validation throws.|
|9|{{StreamsConfig.java:1978-1979}}|{{{}topic.segment.bytes{}}}, 
{{producer.batch.size}}|{{StreamsConfig}} construction throws.|
|10|{{TopologyConfig.java:312}}|{{transactional.state.stores}}|{{" true"}} is 
read as {{{}false{}}}.|
|11|{{TimeWindowedDeserializer.java:117}}|{{window.size.ms}}|The deserializer 
throws.|
h3. Connect configs
||#||Site||Config||Effect of a padded value||
|12|{{ConnectorConfig.java:391}}|{{transforms.<alias>.negate}}|{{" true"}} is 
read as {{{}false{}}}, so the predicate isn't negated.|
|13|{{MirrorMakerConfig.java:111, 121}}|{{emit.heartbeats.enabled}}|{{" true"}} 
is read as {{{}false{}}}.|
|13|{{DefaultReplicationPolicy.java:58}}|{{replication.policy.internal.topic.separator.enabled}}|{{"
 true"}} is read as {{{}false{}}}.|

Trimming in {{ConfigurationControlManager}} would fix every Topic and Group 
row, and rows 1, 2 and 6 under Broker. Row 5 and the Streams and Connect rows 
read local or client config, so each of those sites needs its own fix.

  was:
Discovered by [~xvrl]
h2. Claude analysis:

Rows 1 and 2 appear under both Topic and Broker because {{getTopicConfig}} 
falls back to the cluster and broker-level configs, in 
{{{}ConfigurationControlManager.java:660-664{}}}.
h3. Topic configs
||#||Site||Config||Effect of a padded value||
|1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|{{NumberFormatException}}
 makes the controller fail over, and the next controller hits the same value.|
|2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|{{"
 true"}} is read as {{{}false{}}}, so the controller silently skips unclean 
election.|
|3|{{LogConfig.java:556}}|existing {{remote.storage.enable}}|{{" true"}} is 
read as {{{}false{}}}, so the checks for turning off remote storage are 
skipped.|
|7|{{InternalTopicManager.java:324, 363, 389}}|{{{}retention.ms{}}}, 
{{min.compaction.lag.ms}} read back from the broker|Streams internal topic 
validation throws.|
|8|{{TopicCommand.java:315}}|{{min.insync.replicas}} read back from the 
broker|{{--under-min-isr-partitions}} and {{--at-min-isr-partitions}} throw.|
h3. Broker configs (cluster default or per-broker)
||#||Site||Config||Effect of a padded value||
|1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|The effect 
is the same as for the topic config.|
|2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|The
 effect is the same as for the topic config.|
|5|{{GroupCoordinatorConfig.java:858}}|{{{}group.consumer.assignment.interval.ms{}}},
 {{{}group.share.assignment.interval.ms{}}}, 
{{group.streams.assignment.interval.ms}}|A parse failure blocks every dynamic 
broker config update. A trailing space in server.properties also triggers it.|
|6|{{ConfigHandler.scala:159, 161}}|{{{}leader.replication.throttled.rate{}}}, 
{{{}follower.replication.throttled.rate{}}}, 
{{replica.alter.log.dirs.io.max.bytes.per.second}}|Replication quotas aren't 
updated.|
h3. Group configs
||#||Site||Config||Effect of a padded value||
|4|{{GroupConfig.java:959, 960, 989, 1021, 1048}}|int group configs, such as 
{{consumer.session.timeout.ms}}|Every broker throws, so the group's overrides 
are never applied.|
h3. Streams client configs
||#||Site||Config||Effect of a padded value||
|7|{{InternalTopicManager.java:327, 366}}|{{{}topic.retention.ms{}}}, 
{{topic.min.compaction.lag.ms}}|Streams internal topic validation throws.|
|9|{{StreamsConfig.java:1978-1979}}|{{{}topic.segment.bytes{}}}, 
{{producer.batch.size}}|{{StreamsConfig}} construction throws.|
|10|{{TopologyConfig.java:312}}|{{transactional.state.stores}}|{{" true"}} is 
read as {{{}false{}}}.|
|11|{{TimeWindowedDeserializer.java:117}}|{{window.size.ms}}|The deserializer 
throws.|
h3. Connect configs
||#||Site||Config||Effect of a padded value||
|12|{{ConnectorConfig.java:391}}|{{transforms.<alias>.negate}}|{{" true"}} is 
read as {{{}false{}}}, so the predicate isn't negated.|
|13|{{MirrorMakerConfig.java:111, 121}}|{{emit.heartbeats.enabled}}|{{" true"}} 
is read as {{{}false{}}}.|
|13|{{DefaultReplicationPolicy.java:58}}|{{replication.policy.internal.topic.separator.enabled}}|{{"
 true"}} is read as {{{}false{}}}.|

Trimming in {{ConfigurationControlManager}} would fix every Topic and Group 
row, and rows 1, 2 and 6 under Broker. Row 5 and the Streams and Connect rows 
read local or client config, so each of those sites needs its own fix.


> ConfigDef.parse trims whitespace but raw config usage doesn't
> -------------------------------------------------------------
>
>                 Key: KAFKA-21421
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21421
>             Project: Kafka
>          Issue Type: Bug
>          Components: config, connect, group-coordinator, streams
>            Reporter: Sean Quah
>            Priority: Major
>
> Discovered by [~xvrl]
> h2. Claude analysis:
> Rows 1 and 2 appear under both Topic and Broker because {{getTopicConfig}} 
> falls back to the cluster and broker-level configs, in 
> {{{}ConfigurationControlManager.java:660-664{}}}.
> h3. Topic configs
> ||#||Site||Config||Effect of a padded value||
> |1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|{{NumberFormatException}}
>  makes the controller fail over, and the next controller hits the same value.|
> |2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|{{"
>  true"}} is read as {{{}false{}}}, so the controller silently skips unclean 
> election.|
> |3|{{LogConfig.java:556}}|existing {{remote.storage.enable}}|{{" true"}} is 
> read as {{{}false{}}}, so the checks for turning off remote storage are 
> skipped.|
> |7|{{InternalTopicManager.java:324, 363, 389}}|{{{}retention.ms{}}}, 
> {{min.compaction.lag.ms}} read back from the broker|Streams internal topic 
> validation throws.|
> |8|{{TopicCommand.java:315}}|{{min.insync.replicas}} read back from the 
> broker|{{\-\-under-min-isr-partitions}} and {{\-\-at-min-isr-partitions}} 
> throw.|
> h3. Broker configs (cluster default or per-broker)
> ||#||Site||Config||Effect of a padded value||
> |1|{{ReplicationControlManager.java:2454}}|{{min.insync.replicas}}|The effect 
> is the same as for the topic config.|
> |2|{{ConfigurationControlManager.java:798}}|{{unclean.leader.election.enable}}|The
>  effect is the same as for the topic config.|
> |5|{{GroupCoordinatorConfig.java:858}}|{{{}group.consumer.assignment.interval.ms{}}},
>  {{{}group.share.assignment.interval.ms{}}}, 
> {{group.streams.assignment.interval.ms}}|A parse failure blocks every dynamic 
> broker config update. A trailing space in server.properties also triggers it.|
> |6|{{ConfigHandler.scala:159, 
> 161}}|{{{}leader.replication.throttled.rate{}}}, 
> {{{}follower.replication.throttled.rate{}}}, 
> {{replica.alter.log.dirs.io.max.bytes.per.second}}|Replication quotas aren't 
> updated.|
> h3. Group configs
> ||#||Site||Config||Effect of a padded value||
> |4|{{GroupConfig.java:959, 960, 989, 1021, 1048}}|int group configs, such as 
> {{consumer.session.timeout.ms}}|Every broker throws, so the group's overrides 
> are never applied.|
> h3. Streams client configs
> ||#||Site||Config||Effect of a padded value||
> |7|{{InternalTopicManager.java:327, 366}}|{{{}topic.retention.ms{}}}, 
> {{topic.min.compaction.lag.ms}}|Streams internal topic validation throws.|
> |9|{{StreamsConfig.java:1978-1979}}|{{{}topic.segment.bytes{}}}, 
> {{producer.batch.size}}|{{StreamsConfig}} construction throws.|
> |10|{{TopologyConfig.java:312}}|{{transactional.state.stores}}|{{" true"}} is 
> read as {{{}false{}}}.|
> |11|{{TimeWindowedDeserializer.java:117}}|{{window.size.ms}}|The deserializer 
> throws.|
> h3. Connect configs
> ||#||Site||Config||Effect of a padded value||
> |12|{{ConnectorConfig.java:391}}|{{transforms.<alias>.negate}}|{{" true"}} is 
> read as {{{}false{}}}, so the predicate isn't negated.|
> |13|{{MirrorMakerConfig.java:111, 121}}|{{emit.heartbeats.enabled}}|{{" 
> true"}} is read as {{{}false{}}}.|
> |13|{{DefaultReplicationPolicy.java:58}}|{{replication.policy.internal.topic.separator.enabled}}|{{"
>  true"}} is read as {{{}false{}}}.|
> Trimming in {{ConfigurationControlManager}} would fix every Topic and Group 
> row, and rows 1, 2 and 6 under Broker. Row 5 and the Streams and Connect rows 
> read local or client config, so each of those sites needs its own fix.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to