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

Chris Egerton resolved KAFKA-13971.
-----------------------------------
    Fix Version/s: 3.4.0
         Reviewer: Chris Egerton
       Resolution: Fixed

> Atomicity violations caused by improper usage of ConcurrentHashMap
> ------------------------------------------------------------------
>
>                 Key: KAFKA-13971
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13971
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Divij Vaidya
>            Assignee: Kvicii.Yu
>            Priority: Minor
>              Labels: newbee, newbie
>             Fix For: 3.4.0
>
>
> *Code:* 
> [https://github.com/apache/kafka/blob/trunk/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfigTransformer.java#L81-L84]
>  
> *Problem*
> We are using a {{{}ConcurrentHashMap{}}}, but usage of {{{}get(){}}}, 
> {{null}} check, and {{put()}} may not be thread-safe at lines: 81, 82, and 
> 84. Two threads can perform this same check at the same time and one thread 
> can overwrite the value written by the other thread.
> *Fix*
> Consider replacing {{put()}} with {{putIfAbsent()}} to help prevent 
> accidental overwriting. {{putIfAbsent()}} puts the value only if the 
> {{ConcurrentHashMap}} does not contain the key and therefore avoids 
> overwriting the value written there by the other thread's 
> {{{}putIfAbsent(){}}}.



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

Reply via email to