[
https://issues.apache.org/jira/browse/CAMEL-10115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15361240#comment-15361240
]
ASF GitHub Bot commented on CAMEL-10115:
----------------------------------------
Github user anoordover closed the pull request at:
https://github.com/apache/camel/pull/1057
> Kafka consumer stays running if no messages were received after shutdown start
> ------------------------------------------------------------------------------
>
> Key: CAMEL-10115
> URL: https://issues.apache.org/jira/browse/CAMEL-10115
> Project: Camel
> Issue Type: Bug
> Components: camel-kafka
> Affects Versions: 2.17.1
> Environment: Spring Boot 1.4.0.M3 with Tomcat
> Java 8
> Camel 2.17.1
> Reporter: Vadym Chekrii
> Assignee: Arno Noordover
>
> After triggering {{CamelContext#close()}} method the execution will reach
> {{org.apache.camel.component.kafka.KafkaConsumer#doStop}} where the shutdown
> of the executor instance will be triggered and where in it's turn the
> interruption of the submitted to the executor threads should happen (by
> reaching the native implementation of Thread#interrupt())
> According to
> https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#interrupt--
> interrupt method will only set a corresponding status to the thread, but will
> not terminate it.
> Problem is in the line {{KafkaConsumer.java:108}}:
> {{ConsumerRecords<Object, Object> records = consumer.poll(Long.MAX_VALUE);}}
> In the Kafka implementation of the poll method this will lead to almost
> infinite {{while}} loop which is not checking the thread status and this loop
> will exit only in case of receiving a message from a broker. Only after
> exciting the loop the interrupted status of the thread will be discovered and
> the thread will be terminated.
> This leads to a couple of problems:
> 1. The KafkaConsumers remain alive until receiving at least one more message
> from the broker.
> 2. As the CamelContext at this point of time is most likely already shut
> down, the received message is not going to be processed, but will be
> acknowledged to the broker. So effectively the message gets lost.
> A potential fix would be to either make the poll timeout reasonably small or
> configurable.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)