Oleg Kuznetsov created KAFKA-8877:
-------------------------------------
Summary: Race condition on partition counter
Key: KAFKA-8877
URL: https://issues.apache.org/jira/browse/KAFKA-8877
Project: Kafka
Issue Type: Bug
Components: producer
Affects Versions: 2.2.1
Reporter: Oleg Kuznetsov
In the method:
*org.apache.kafka.clients.producer.internals.DefaultPartitioner#nextValue*
{code:java}
private int nextValue(String topic) {
AtomicInteger counter = topicCounterMap.get(topic);
if (null == counter) {
counter = new AtomicInteger(ThreadLocalRandom.current().nextInt());
AtomicInteger currentCounter = topicCounterMap.putIfAbsent(topic,
counter);
if (currentCounter != null) {
counter = currentCounter;
}
}
return counter.getAndIncrement();
}
{code}
**the counter might be created multiple times instead of once.
I propose to replace it with something like ** *topicCounterMap.compute(topic,
_ -> ...* (init the counter once per topic*))* **
--
This message was sent by Atlassian Jira
(v8.3.2#803003)