lbradstreet opened a new pull request #10704:
URL: https://github.com/apache/kafka/pull/10704


   Recently we have noticed multiple instances where KafkaProducers have failed 
to constructer due to the following exception:
   
   ```
   org.apache.kafka.common.KafkaException: Failed to construct kafka producer 
at 
org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:440) 
at 
org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:291) 
at 
org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:318) 
java.base/java.lang.Thread.run(Thread.java:832) Caused by: 
java.util.ConcurrentModificationException at 
java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1584) at 
java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1607) at 
java.base/java.util.AbstractSet.removeAll(AbstractSet.java:171) at 
org.apache.kafka.common.config.AbstractConfig.unused(AbstractConfig.java:221) 
at 
org.apache.kafka.common.config.AbstractConfig.logUnused(AbstractConfig.java:379)
 at 
org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:433) 
... 9 more exception.class:org.apache.kafka.common.KafkaException 
exception.message:Failed to construct kafka producer
   ```
   
   This is due to the fact that `used` below is a synchronized set. `used` is 
being modified while removeAll is being called. This may be due to the way that 
keys are added to it when used. Switching to a CopyOnWriteArraySet avoids this 
issue as it support concurrent iteration.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to