You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Volkan Yazici (Jira)" <ji...@apache.org> on 2021/10/18 16:37:00 UTC

[jira] [Commented] (LOG4J2-3173) KafkaAppender for log4j2 prevents an app from terminating

    [ https://issues.apache.org/jira/browse/LOG4J2-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17430087#comment-17430087 ] 

Volkan Yazici commented on LOG4J2-3173:
---------------------------------------

Thanks so much for the investigation and report, [~MPeli], it is really appreciated. To the best of my knowledge, all the maintainers are busy with their own agenda. Would you also mind submitting a PR to fix this, please?

> KafkaAppender for log4j2 prevents an app from terminating
> ---------------------------------------------------------
>
>                 Key: LOG4J2-3173
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3173
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>            Reporter: Martin Pelak
>            Priority: Major
>         Attachments: HelloWorldLog4j.zip, kafka-appender-it-hangs-here.png, log4j2.xml
>
>
> I have created a simple java `HelloWorld` app. When I start Kafka and then the app, all messages are logged to Kafka and my app finishes with exit code 0.
> However, if I start the app without starting Kafka, it seems that Kafka Appender prevents the app from terminating. It tries to send all logged messages. The termination time depends on  the number of logged messages. Each messages adds an extra one minute delay. So if one message has been logged, there is one minutes delay. It is two minutes for two messages and so on. 
> I found out that if I stop the Kafka appender manually, the app terminates without any delays.
> {code:java}
> public class HelloWorld {
>     private static final Logger logger = LogManager.getLogger(HelloWorld.class);
>     public static void main(String[] args) throws InterruptedException {
>         logger.info("test1");
>         logger.error("test2");
>         LoggerContext context = (LoggerContext) LogManager.getContext(false);
>         KafkaAppender kafkaAppender = context.getConfiguration().getAppender("Kafka");
>         kafkaAppender.stop();
>         LogManager.shutdown();
>     }
> }
> {code}
> The one minutes delay (per message) is configured by [max.block.ms|http://kafka.apache.org/documentation.html#producerconfigs_max.block.ms]. The parameter syncSend seems to have no affect.
> It is important for us that the app runs and terminates without any delays, even if some messages were lost.
> I tried to debug it and found out where it hangs, see 
> !kafka-appender-it-hangs-here.png!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)