[ https://issues.apache.org/jira/browse/KAFKA-3982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vahid Hashemian updated KAFKA-3982: ----------------------------------- Description: With the recent introduction of {{consumer.property}} argument in console consumer, both new and old consumer could overwrite certain properties provided using this new argument. Specifically, the old consumer would overwrite the values provided for [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L173] and [{{zookeeper.connect}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L174], and the new consumer would overwrite the values provided for [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L196], [{{bootstrap.servers}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L197], [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L198], and [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L199]. For example, running the old consumer as {{bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic foo --consumer-property auto.offset.reset=none}} the value that's eventually selected for {{auto.offset.reset}} will be {{largest}}, overwriting what the user provides in the command line. This seems to be because the properties provided via {{consumer.property}} argument are not considered when finalizing the configuration of the consumer. Some properties can now be provided in three different places (directly in the command line, via the {{consumer.property}} argument, and via the {{consumer.config}} argument, in the same order of precedence). was: With the recent introduction of {{consumer.property}} argument in console consumer, both new and old consumer could overwrite certain properties provided using this new argument. Specifically, the old consumer would overwrite the values provided for [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L173] and [{{zookeeper.connect}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L174], and the new consumer would overwrite the values provided for [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L196], [{{bootstrap.servers}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L197], [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L198], and [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L199]. For example, running the old consumer as {{bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic foo --consumer-property auto.offset.reset=none}} the value that's eventually selected for {{auto.offset.reset}} will be {{largest}}, overwriting what the user provides in the command line. This seems to be because the properties provided via {{consumer.property}} argument are not considered when finalizing the configuration of the consumer. Since these properties can now be provided in three different places (directly in the command line, via the {{consumer.property}} argument, and via the {{consumer.config}} argument) it would help to clarify the precedence order among the three. > Issue with processing order of consumer properties in console consumer > ---------------------------------------------------------------------- > > Key: KAFKA-3982 > URL: https://issues.apache.org/jira/browse/KAFKA-3982 > Project: Kafka > Issue Type: Bug > Components: consumer > Reporter: Vahid Hashemian > Assignee: Vahid Hashemian > Priority: Minor > > With the recent introduction of {{consumer.property}} argument in console > consumer, both new and old consumer could overwrite certain properties > provided using this new argument. > Specifically, the old consumer would overwrite the values provided for > [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L173] > and > [{{zookeeper.connect}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L174], > and the new consumer would overwrite the values provided for > [{{auto.offset.reset}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L196], > > [{{bootstrap.servers}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L197], > > [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L198], > and > [{{key.deserializer}}|https://github.com/apache/kafka/blob/10bbffd75439e10fe9db6cf0aa48a7da7e386ef3/core/src/main/scala/kafka/tools/ConsoleConsumer.scala#L199]. > For example, running the old consumer as {{bin/kafka-console-consumer.sh > --zookeeper localhost:2181 --topic foo --consumer-property > auto.offset.reset=none}} the value that's eventually selected for > {{auto.offset.reset}} will be {{largest}}, overwriting what the user provides > in the command line. > This seems to be because the properties provided via {{consumer.property}} > argument are not considered when finalizing the configuration of the consumer. > Some properties can now be provided in three different places (directly in > the command line, via the {{consumer.property}} argument, and via the > {{consumer.config}} argument, in the same order of precedence). -- This message was sent by Atlassian JIRA (v6.3.4#6332)