Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-709

Default queue.enqueue.timeout.ms to -1

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.8.0
    • None
    • producer
    • None

    Description

      Hey Guys,

      It seems that, by default, producers in 0.8 are async, and have a default queue.enqueue.timeout.ms of 0. This means that anyone who reads messages faster than they're producing them will likely end up eventually hitting this exception:

      Exception in thread "Thread-3" kafka.common.QueueFullException: Event queue is full of unsent messages, could not send event: KeyedMessage(PageViewEventByGroupJson,Missing Page Group,java.nio.HeapByteBuffer[pos=0 lim=125 cap=125])
      at kafka.producer.Producer$$anonfun$asyncSend$1.apply(Producer.scala:111)
      at kafka.producer.Producer$$anonfun$asyncSend$1.apply(Producer.scala:89)
      at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
      at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:32)
      at kafka.producer.Producer.asyncSend(Producer.scala:89)
      at kafka.producer.Producer.send(Producer.scala:77)

      As it says in https://cwiki.apache.org/KAFKA/kafka-mirroring.html, this can result in losing messages, and nasty exceptions in the logs. I think the better default is setting queue.enqueue.timeout.ms to -1, which will just block until the queue frees up.

      Attachments

        1. kafka-709.patch
          0.8 kB
          Neha Narkhede

        Activity

          People

            nehanarkhede Neha Narkhede
            criccomini Chris Riccomini
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: