This is an automated email from the ASF dual-hosted git repository.
rsivaram pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 3de9103 KAFKA-6415; Use WARN log level for Metadata in system test
3de9103 is described below
commit 3de910319e56d81c50597f05459d35752345907c
Author: Rajini Sivaram <[email protected]>
AuthorDate: Wed Jan 3 19:17:53 2018 +0000
KAFKA-6415; Use WARN log level for Metadata in system test
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 is a temporary workaround to avoid deadlocks in system tests by
setting log level to WARN for `Metadata` in `VerifiableLog4jAppender`. The fix
has been verified using the system tests log4j_appender_test.py which started
failing when the info-level log entry was introduced.
Author: Rajini Sivaram <[email protected]>
Reviewers: Ismael Juma <[email protected]>, Satish Duggana
<[email protected]>, tedyu <[email protected]>
Closes #4375 from rajinisivaram/KAFKA-6415-log4jappender
---
.../src/main/java/org/apache/kafka/tools/VerifiableLog4jAppender.java | 3 +++
1 file changed, 3 insertions(+)
diff --git
a/tools/src/main/java/org/apache/kafka/tools/VerifiableLog4jAppender.java
b/tools/src/main/java/org/apache/kafka/tools/VerifiableLog4jAppender.java
index 4dd7bee..9533f6e 100644
--- a/tools/src/main/java/org/apache/kafka/tools/VerifiableLog4jAppender.java
+++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableLog4jAppender.java
@@ -204,6 +204,9 @@ public class VerifiableLog4jAppender {
props.setProperty("log4j.appender.KAFKA.kerb5ConfPath",
res.getString("kerb5ConfPath"));
}
props.setProperty("log4j.logger.kafka.log4j", "INFO, KAFKA");
+ // Changing log level from INFO to WARN as a temporary workaround
for KAFKA-6415. This is to
+ // avoid deadlock in system tests when producer network thread
appends to log while updating metadata.
+
props.setProperty("log4j.logger.org.apache.kafka.clients.Metadata", "WARN,
KAFKA");
if (configFile != null) {
try {
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].