[
https://issues.apache.org/jira/browse/KAFKA-7509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17507768#comment-17507768
]
Chris Egerton edited comment on KAFKA-7509 at 3/16/22, 5:41 PM:
----------------------------------------------------------------
Bumping this again as the problem continues to persist for Connect (and
possibly other projects).
While I agree that there's value in logging warnings about unrecognized values
in some contexts, that value is lost when the false positive rate for these
warnings becomes too high, which appears to be the case for Connect. As
[~rhauch] has noted with his exhaustive research into this problem space, it's
basically impossible at the moment for Connect to preemptively filter out
irrelevant values for some of the Kafka clients that it creates. And, as
[~mjsax] has noted, it's not an option to unconditionally demote these log
messages to {{DEBUG}} level for all Kafka clients, since there are plenty of
projects that do not generate these kinds of false positives, in which case
these messages do serve as effective warnings that there may be a typo in the
client's config.
One compromise could be to do the following:
# Add a new {{AbstractConfig::logUnused}} variant that operates at {{DEBUG}}
level instead of {{WARN}} (exact details negotiable; this could be an
overloading of the existing {{logUnused}} method that accepts a boolean or some
other parameter to toggle the log level used, or a separate {{debugUnused}}
method that's hardcoded to use {{{}DEBUG{}}}-level logging, or something else
entirely).
# Add a new {{warn.on.unused}} boolean property to the producer, consumer, and
admin client API, with a default of {{{}true{}}}. When enabled, the current
behavior of logging unrecognized values at {{WARN}} level will take place. When
disabled (i.e., set to {{{}false{}}}), unrecognized values will be instead
logged at {{DEBUG}} level, using the new {{AbstractConfig}} API from part 1.
# Modify Connect to set {{warn.on.unused}} to {{false}} by default for all
Kafka clients that it uses for its internal topics (and possibly in other
contexts where the rate of false positives is also high). Allow users to
override this default by explicitly specifying a value for the property in the
Connect worker config.
This would be completely backwards compatible outside of Connect but also allow
for other projects to opt in to a reduction in {{{}WARN{}}}-level log spam, and
within Connect, would greatly reduce the false positive rate for
{{{}WARN{}}}-level messages.
Obviously, it would require a KIP, but I'm happy to write one if this seems
like a reasonable high-level approach. Thoughts?
was (Author: chrisegerton):
Bumping this again as the problem continues to persist for Connect (and
possibly other projects).
While I agree that there's value in logging warnings about unrecognized values
in some contexts, that value is lost when the false positive rate for these
warnings becomes too high, which appears to be the case for Connect. As
[~rhauch] has noted with his exhaustive research into this problem space, it's
basically impossible at the moment for Connect to preemptively filter out
irrelevant values for some of the Kafka clients that it creates. And, as
[~mjsax] has noted, it's not an option to unconditionally demote these log
messages to {{DEBUG}} level for all Kafka clients, since there are plenty of
projects that do not generate these kinds of false positives, in which case
these messages do serve as effective warnings that there may be a typo in the
client's config.
One compromise could be to do the following:
# Add a new {{AbstractConfig::logUnused}} variant that operates at {{DEBUG}}
level instead of {{WARN}} (exact details negotiable; this could be an
overloading of the existing {{logUnused}} method that accepts a boolean or some
other parameter to toggle the log level used, or a separate {{debugUnused}}
method that's hardcoded to use {{{}DEBUG{}}}-level logging, or something else
entirely).
# Add a new {{warn.on.unused}} boolean property to the producer, consumer, and
admin client API, with a default of {{{}true{}}}. When enabled, the current
behavior of logging unrecognized values at {{WARN}} level will take place. When
disabled (i.e., set to {{{}false{}}}), unrecognized values will be instead
logged at {{DEBUG}} level, using the new {{AbstractConfig}} API from part 1.
# Modify Connect to set {{warn.on.unused}} to {{false}} by default for all
Kafka clients that it uses for its internal topics (and possibly in other
contexts where the rate of false positives is also high). Allow users to
override this default by explicitly specifying a value for the property in the
Connect worker config.
This would be completely backwards compatible outside of Connect but also allow
for other projects to opt in to a reduction in {{{}WARN{}}}-level log spam, and
within Connect, would greatly reduce the false positive rate for
{{{}WARN{}}}-level messages.
Obviously, it would require a KIP, but I'm happy to write one if this seems
like a reasonable high-level approach. Thoughts?
> Kafka Connect logs unnecessary warnings about unused configurations
> -------------------------------------------------------------------
>
> Key: KAFKA-7509
> URL: https://issues.apache.org/jira/browse/KAFKA-7509
> Project: Kafka
> Issue Type: Improvement
> Components: clients, KafkaConnect
> Affects Versions: 0.10.2.0
> Reporter: Randall Hauch
> Assignee: Randall Hauch
> Priority: Major
>
> When running Connect, the logs contain quite a few warnings about "The
> configuration '{}' was supplied but isn't a known config." This occurs when
> Connect creates producers, consumers, and admin clients, because the
> AbstractConfig is logging unused configuration properties upon construction.
> It's complicated by the fact that the Producer, Consumer, and AdminClient all
> create their own AbstractConfig instances within the constructor, so we can't
> even call its {{ignore(String key)}} method.
> See also KAFKA-6793 for a similar issue with Streams.
> There are no arguments in the Producer, Consumer, or AdminClient constructors
> to control whether the configs log these warnings, so a simpler workaround
> is to only pass those configuration properties to the Producer, Consumer, and
> AdminClient that the ProducerConfig, ConsumerConfig, and AdminClientConfig
> configdefs know about.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)