[ https://issues.apache.org/jira/browse/KAFKA-1733?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marc Chung updated KAFKA-1733: ------------------------------ Attachment: kafka-1733-add-connectTimeoutMs.patch In this patch, I've set the connectTimeoutMs to the same value as readTimeoutMs. It's patched against trunk. > Producer.send will block indeterminately when broker is unavailable. > -------------------------------------------------------------------- > > Key: KAFKA-1733 > URL: https://issues.apache.org/jira/browse/KAFKA-1733 > Project: Kafka > Issue Type: Bug > Components: core, producer > Reporter: Marc Chung > Attachments: kafka-1733-add-connectTimeoutMs.patch > > > This is a follow up to the conversation here: > https://mail-archives.apache.org/mod_mbox/kafka-dev/201409.mbox/%3ccaog_4qymoejhkbo0n31+a-ujx0z5unsisd5wbrmn-xtx7gi...@mail.gmail.com%3E > During ClientUtils.fetchTopicMetadata, if the broker is unavailable, > socket.connect will block indeterminately. Any retry policy > (message.send.max.retries) further increases the time spent waiting for the > socket to connect. > The root fix is to add a connection timeout value to the BlockingChannel's > socket configuration, like so: > {noformat} > -channel.socket.connect(new InetSocketAddress(host, port)) > +channel.socket.connect(new InetSocketAddress(host, port), connectTimeoutMs) > {noformat} > The simplest thing to do here would be to have a constant, default value that > would be applied to every socket configuration. > Is that acceptable? -- This message was sent by Atlassian JIRA (v6.3.4#6332)