You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Antony Stubbs (Jira)" <ji...@apache.org> on 2020/08/10 17:52:00 UTC

[jira] [Created] (KAFKA-10382) MockProducer is not ThreadSafe, ideally it should be as the implementation it mocks is

Antony Stubbs created KAFKA-10382:
-------------------------------------

             Summary: MockProducer is not ThreadSafe, ideally it should be as the implementation it mocks is
                 Key: KAFKA-10382
                 URL: https://issues.apache.org/jira/browse/KAFKA-10382
             Project: Kafka
          Issue Type: Bug
          Components: clients
    Affects Versions: 2.6.0
            Reporter: Antony Stubbs


In testing my project, I discovered that the MockProducer is not thread safe as I thought. It doesn't use thread safe libraries for it's underlying stores, and only _some_ of it’s methods are synchronised.

 

As performance isn’t an issue for this, I would propose simply synchronising all public methods in the class, as some already are.

 

In my project, send is synchronised and commit transactions isn’t. This was causing weird collection manipulation and messages going missing. My lolcat only solution was simply to synchronise on the MockProducer instance before calling commit.

 

See my workaround: https://github.com/astubbs/async-consumer/pull/13/files#diff-8e93aa2a2003be7436f94956cf809b2eR558

 

PR available: https://github.com/apache/kafka/pull/9154



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