[
https://issues.apache.org/jira/browse/KAFKA-2813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jun Rao resolved KAFKA-2813.
----------------------------
Resolution: Fixed
Issue resolved by pull request 501
[https://github.com/apache/kafka/pull/501]
> selector doesn't close socket connection on non-IOExceptions
> ------------------------------------------------------------
>
> Key: KAFKA-2813
> URL: https://issues.apache.org/jira/browse/KAFKA-2813
> Project: Kafka
> Issue Type: Bug
> Components: core
> Reporter: Jun Rao
> Assignee: Jun Rao
> Priority: Blocker
> Fix For: 0.9.0.0
>
>
> When running a system test, we saw lots of entries like the following. The
> issue is that when the current leader switches to the follower, we will
> truncate the log in the follower. It's possible there is a concurrent fetch
> request being served at this moment. If this happens, we throw a
> KafkaException when trying to send the fetch response (in FileMessageSet).
> The exception will propagate through Selector.poll(). Selector catches
> IOException and closes the corresponding socket. However, KafkaException is
> not an IOException. Since the socket is not closed, Selector.poll() will keep
> accessing the socket and keep getting the same error.
> [2015-11-11 07:25:01,150] ERROR Processor got uncaught exception.
> (kafka.network.Processor)
> kafka.common.KafkaException: Size of FileMessageSet
> /mnt/kafka-data-logs/test_topic-0/00000000000000000000.log has been truncated
> during write: old size 16368, new size 0
> at kafka.log.FileMessageSet.writeTo(FileMessageSet.scala:158)
> at kafka.api.PartitionDataSend.writeTo(FetchResponse.scala:77)
> at
> org.apache.kafka.common.network.MultiSend.writeTo(MultiSend.java:81)
> at kafka.api.TopicDataSend.writeTo(FetchResponse.scala:148)
> at
> org.apache.kafka.common.network.MultiSend.writeTo(MultiSend.java:81)
> at kafka.api.FetchResponseSend.writeTo(FetchResponse.scala:291)
> at
> org.apache.kafka.common.network.KafkaChannel.send(KafkaChannel.java:165)
> at
> org.apache.kafka.common.network.KafkaChannel.write(KafkaChannel.java:152)
> at org.apache.kafka.common.network.Selector.poll(Selector.java:301)
> at kafka.network.Processor.run(SocketServer.scala:413)
> at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)