[ https://issues.apache.org/jira/browse/KAFKA-6415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dong Lin resolved KAFKA-6415. ----------------------------- Resolution: Fixed > KafkaLog4jAppender deadlocks when logging from producer network thread > ---------------------------------------------------------------------- > > Key: KAFKA-6415 > URL: https://issues.apache.org/jira/browse/KAFKA-6415 > Project: Kafka > Issue Type: Bug > Components: log > Reporter: Rajini Sivaram > Assignee: Rajini Sivaram > Priority: Major > Fix For: 2.1.0 > > > When a log entry is appended to a Kafka topic using KafkaLog4jAppender, the > producer.send operation may block waiting for metadata. This can result in > deadlocks in a couple of scenarios if a log entry from the producer network > thread is also at a log level that results in the entry being appended to a > Kafka topic. > 1. Producer's network thread will attempt to send data to a Kafka topic and > this is unsafe since producer.send may block waiting for metadata, causing a > deadlock since the thread will not process the metadata request/response. > 2. KafkaLog4jAppender#append is invoked while holding the lock of the logger. > So the thread waiting for metadata in the initial send will be holding the > logger lock. If the producer network thread has.a log entry that needs to be > appended, it will attempt to acquire the logger lock and deadlock. > This was probably the case right from the beginning when KafkaLog4jAppender > was introduced, but did not cause any issues so far since there were only > debug log entries in that path which were not logged to a Kafka topic by any > of the tests. A recent info level log entry introduced by the commit > https://github.com/apache/kafka/commit/a3aea3cf4dbedb293f2d7859e0298bebc8e2185f > is causing system test failures in log4j_appender_test.py due to the > deadlock. > The asynchronous append case can be fixed by moving all send operations to a > separate thread. But KafkaLog4jAppender also has a syncSend option which > blocks append while holding the logger lock until the send completes. Not > sure how this can be fixed if we want to support log appends from the > producer network thread. -- This message was sent by Atlassian JIRA (v7.6.3#76005)