[ 
https://issues.apache.org/jira/browse/KAFKA-20973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chia-Ping Tsai updated KAFKA-20973:
-----------------------------------
    Attachment:     (was: DynamicConfigWithConfigProviderTest.java)

> Unable to dynamically update non string configs with config providers
> ---------------------------------------------------------------------
>
>                 Key: KAFKA-20973
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20973
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Mickael Maison
>            Assignee: Ming-Yen Chung
>            Priority: Major
>             Fix For: 4.5.0
>
>         Attachments: DynamicConfigWithConfigProviderTest.java
>
>
> When using config.providers in a dynamic broker config update (via 
> IncrementalAlterConfigs), provider references like ${file:/path:key} work for 
> STRING and PASSWORD typed configs but silently fail for other types
>   (INT, LONG, BOOLEAN, LIST with validators, etc.).
> The root cause is in DynamicBrokerConfig.fromPersistentProps (line 327), 
> which calls removeInvalidConfigs and validateConfigTypes on the raw persisted 
> values before resolveVariableConfigs is called. For non-STRING
>   types, the literal placeholder string ${file:/path:key} fails type parsing 
> (e.g., "Not a number of type INT" for num.io.threads), and the config entry 
> is silently removed from the props.
> There is a unit test, 
> DynamicBrokerReconfigurationTest.testUpdatesUsingConfigProvider which is 
> expected to demonstrate this work but the test is flawed because it only 
> tests custom and per listener configurations which are handle differently. If 
> we try to update a config like num.io.threads, the test fails with:
> {noformat}
> ERROR Dynamic broker config contains invalid values in: Set(num.io.threads), 
> these configs will be ignored (kafka.server.DynamicBrokerConfig:63)
> org.apache.kafka.common.config.ConfigException: Invalid value 
> ${file:num.io.threads:threads} for configuration num.io.threads: Not a number 
> of type INT
>       at 
> org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:789)
>       at 
> org.apache.kafka.server.config.DynamicConfig$Broker.validate(DynamicConfig.java:72)
>       at 
> org.apache.kafka.server.config.DynamicBrokerConfig.validateConfigTypes(DynamicBrokerConfig.java:151)
>       at 
> org.apache.kafka.server.config.DynamicBrokerConfig.validateConfigTypes(DynamicBrokerConfig.java:145)
>       at 
> kafka.server.DynamicBrokerConfig.removeInvalidConfigs(DynamicBrokerConfig.scala:371)
>       at 
> kafka.server.DynamicBrokerConfig.fromPersistentProps(DynamicBrokerConfig.scala:327)
>       at 
> kafka.server.DynamicBrokerConfig.$anonfun$updateBrokerConfig$1(DynamicBrokerConfig.scala:279)
>       at org.apache.kafka.server.util.LockUtils.inLock(LockUtils.java:96)
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to