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)

Reply via email to