Sorry, that's my bad. The intention was that in case the producer blocks
there forever (because memory never frees up for some reason), having a
timeout will allow us to get a more accurate stat on the waitTime sensor.
Filed and patched kafka-1673. Could you take a look?

Thanks,

Jun

On Sun, Oct 5, 2014 at 3:35 PM, Jay Kreps <jay.kr...@gmail.com> wrote:

> 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