KianChen created FLINK-32400: -------------------------------- Summary: KafkaSourceBuilder#maybeOverride get property as a string to checking if has value may not be the best way Key: FLINK-32400 URL: https://issues.apache.org/jira/browse/FLINK-32400 Project: Flink Issue Type: Improvement Components: Connectors / Kafka Affects Versions: 1.14.0 Reporter: KianChen Fix For: 1.18.0, 1.17.0, 1.16.0, 1.15.0, 1.14.0
Since flink 1.14 the FlinkKafkaConsumer is deprecated, using KafkaSouce instead. As the summary, the KafkaSourceBuilder can be set properties through setProperties(Properties props) method. And the value of props can be an object (such as the "enable.auto.commit" can be boolean). The #maybeOverride method used Properties#getProperty (in this method if the value is not type of string then return null) to get the value and checking if it's null. KafkaSourceBuilder#build calls #parseAndSetRequiredProperties method and it checks the "enable.auto.commit" property. If the value is true which is type of boolean then it will be overridden by false. But the kafka-clients supports boolean type. the value only for checking and printing, so I think use Properties#get method to get the value as an object is better. the source code as below: {code:java} private boolean maybeOverride(String key, String value, boolean override) { boolean overridden = false; String userValue = this.props.getProperty(key); if (userValue != null) { if (override) { LOG.warn(String.format("Property %s is provided but will be overridden from %s to %s", key, userValue, value)); this.props.setProperty(key, value); overridden = true; } } else { this.props.setProperty(key, value); } return overridden; } {code} the improvement as below: {code:java} private boolean maybeOverride(String key, String value, boolean override) { boolean overridden = false; Object userValue = props.get(key); if (userValue != null) { if (override) { LOG.warn(String.format("Property %s is provided but will be overridden from %s to %s", key, userValue, value)); props.setProperty(key, value); overridden = true; } } else { props.setProperty(key, value); } return overridden; } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)