[
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)