Igor Soarez created KAFKA-14303: ----------------------------------- Summary: Producer.send without record key and batch.size=0 goes into infinite loop Key: KAFKA-14303 URL: https://issues.apache.org/jira/browse/KAFKA-14303 Project: Kafka Issue Type: Bug Components: clients, producer Affects Versions: 3.3.1, 3.3.0 Reporter: Igor Soarez
3.3 has broken previous producer behavior. A call to {{producer.send(record)}} with a record without a key and configured with {{batch.size=0}} never returns. Reproducer: {code:java} class ProducerIssueTest extends IntegrationTestHarness { override protected def brokerCount = 1 @Test def testProduceWithBatchSizeZeroAndNoRecordKey(): Unit = { val topicName = "foo" createTopic(topicName) val overrides = new Properties overrides.put(ProducerConfig.BATCH_SIZE_CONFIG, 0) val producer = createProducer(keySerializer = new StringSerializer, valueSerializer = new StringSerializer, overrides) val record = new ProducerRecord[String, String](topicName, null, "hello") val future = producer.send(record) // goes into infinite loop here future.get(10, TimeUnit.SECONDS) } } {code} [Documentation for producer configuration|https://kafka.apache.org/documentation/#producerconfigs_batch.size] states {{batch.size=0}} as a valid value: {quote}Valid Values: [0,...] {quote} and recommends its use directly: {quote}A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). {quote} -- This message was sent by Atlassian Jira (v8.20.10#820010)