Maybe this was introduced in

dcc88408c98a07cb9a816ab55cd81e55f1d2217d

as part of KAFKA-1488.

We seem to add a hard coded 300 ms timeout on the wait time. After this 300
ms timeout the thread is allowed to allocate memory to itself irrespective
of whether it is next in line. This is not right at all and will cause all
kinds of bad things to happen including deadlocks and that error. Joel,
Jun, Guozhang, any idea what the idea was here? This code is fairly nuanced
and we have to be pretty thoughtful in changing it. I actually don't know
what the intention here was or why we would add this...?

-Jay

On Sun, Oct 5, 2014 at 2:59 PM, Bhavesh Mistry <mistry.p.bhav...@gmail.com>
wrote:

> Hi Kafka Dev team,
>
> I am getting following exception occasionally, and data is lost due to this
> exception.    What could cause this error ?  We have prod release coming up
> with New Kafka API end of this week.  So I any help is greatly appreciated.
>
> * java.lang.IllegalStateException: Wrong condition: this shouldn't happen.*
>     at
>
> org.apache.kafka.clients.producer.internals.BufferPool.allocate(BufferPool.java:156)
>     at
>
> org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:152)
>     at
>
> org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:237)
>     ...................
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>     at java.lang.Thread.run(Thread.java:744)
>
> Here is Producer Config:
>
> bootstrap.servers=[List ]
> acks=1
> buffer.memory=3145728
> compression.type=snappy
> retries=3
> batch.size=49152
> max.request.size=2097152
> send.buffer.bytes=2097152
> block.on.buffer.full=true
> send.buffer.bytes=2097152
> linger.ms=2000
>
> Thanks,
>
> Bhavesh
>

Reply via email to