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)