Sean Quah created KAFKA-21421:
---------------------------------
Summary: 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
Rows 1 and 2 appear under both Topic and Broker because \{{getTopicConfig}}
falls back to the cluster and broker-level configs
(\{{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)