[ https://issues.apache.org/jira/browse/KAFKA-7509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17509095#comment-17509095 ]
Matthias J. Sax commented on KAFKA-7509: ---------------------------------------- {quote} # Breaking backwards compatibility for a lot of Kafka components (producer/consumer interceptors, Connect REST extensions, etc.{quote} Why? Could we not feature flag it (disable by default to preserve backward compatibility; maybe log a WARN message if not enabled; have a path forward to enable by default in some future major release)? {quote} # Complicating the configuration behavior for applications with this type of "nested" configuration surface{quote} Yes, it's a trade-off between flexibility and complexity – personally, I think that for most cases deep nesting won't be the case, and single-level nesting seems not to be too complicated and more flexible compare to a "config enable/disable warn-logging". {quote} # Makes it impossible to have sub-configured components that are aware of their parent's configuration (for example, you could no longer have a Connect REST extension that's aware of the entire Connect worker's config without duplicating those same properties into the sub-config for that REST extension){quote} This is a use-case I never encountered before. From an encapsulation point of view, I am wondering why an inner component would need the config of the outer one? Can you elaborate? {quote}Ultimately, this still seems a little too aggressive of a change for the problem that it's trying to solve. If we were redesigning these APIs from the ground up, it would certainly be beneficial, but considering how much has been built on top of these APIs already and how much work it'd take for users to adjust to the proposed changes, it doesn't seem like a friendly tradeoff. Plus, for some situations (like the example with REST extensions), it's unclear how we'd want to proceed. {quote} Yeah, that always tricky. Personally, I tend to prefer "the right" solution even if it might be more complex to get there. But I don't feel too strong about it either. I agree it's "just" about log messages, so maybe not worth it. My personal concern with disabling (either completely via config or move to DEBUG) is that actual useful warning would be affected, too. It just seems to be too coarse grained – for this case, I was rather have spurious / annoying WARNs than allow to disable them. But I guess details would need to get discussed on a KIP anyway... > 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 > 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)