[ 
https://issues.apache.org/jira/browse/KAFKA-10741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17234996#comment-17234996
 ] 

Michael commented on KAFKA-10741:
---------------------------------

I think, since in the transition from _ConsumerConfig_ to _AbstractConfig_ the 
Properties-Object is interpreted only in it's map-representation, it would be 
helpful to either:
 # Document, that the Properties-Object should only be used as Map, resp. that 
the _defaults_ are not considered.
 # Implement a Property-To-Map-Conversion, which takes into consideration, that 
there might be defaults. (i.e. reads the _propertyNames()_ and copy the 
resolved values for those.)
 # Not use Property-Objects from the beginning, directly requiring a Map.

> Kafka ConsumerProperties.addDeserializerToConfig breaks hirarchical property 
> resolution.
> ----------------------------------------------------------------------------------------
>
>                 Key: KAFKA-10741
>                 URL: https://issues.apache.org/jira/browse/KAFKA-10741
>             Project: Kafka
>          Issue Type: Bug
>          Components: consumer
>    Affects Versions: 2.5.0, 2.6.0, 2.5.1
>            Reporter: Michael
>            Priority: Major
>
> {{The Method "addDeserializerToConfig(...)" creates a new Property-Object and 
> attempts to preserve the set-up properties.}}
> {{For this it calls _putAll(Map<?, ?> t)_ and by this copies all properties 
> that are part of the old properties object in it's Map-Representation.}}
> {code:java}
> public static Properties addDeserializerToConfig(Properties properties,
>                                                  Deserializer<?> 
> keyDeserializer,
>                                                  Deserializer<?> 
> valueDeserializer) {
>     Properties newProperties = new Properties();
>     newProperties.putAll(properties);
>     if (keyDeserializer != null)
>         newProperties.put(KEY_DESERIALIZER_CLASS_CONFIG, 
> keyDeserializer.getClass().getName());
>     if (valueDeserializer != null)
>         newProperties.put(VALUE_DESERIALIZER_CLASS_CONFIG, 
> valueDeserializer.getClass().getName());
>     return newProperties;
> }
> {code}
> {{If you utilize the Properties hirarchical structure, and create Properties 
> like this:}}
> {code:java}
> public static Properties defaultProperties = createDefaultProperties();
> public Properties createProperties(String someKey, String someValue) {
>     Properties newProperties(defaultProperties);
>     properties.addProperty(someKey, someValue);
> }{code}
> the properties set in the defaultProperties are stored in the 
> Properties-Member _defaults_ and are not part of the Map-Representation.
> {{Thus, if only the Map-Representation is copied, the _defaults_ are lost.}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to