Jason Gustafson created KAFKA-12361:
---------------------------------------
Summary: Change default connect producer request timeout
Key: KAFKA-12361
URL: https://issues.apache.org/jira/browse/KAFKA-12361
Project: Kafka
Issue Type: Improvement
Reporter: Jason Gustafson
Prior to KIP-91, which introduced delivery.timeout.ms, there was no easy way to
ensure that records sent through the producer would even have the opportunity
to get delivered. Records could be timed out in the accumulator if
`request.timeout.ms` was reached before getting sent. Users worked around this
problem by setting `request.timeout.ms=Int.MaxValue`. The downside is that this
made the producer slower to discover "unclean" connection failures. Now that we
have KIP-91, there shouldn't be any reason to keep this workaround.
One place it would be good to fix this is in connect's source tasks:
{code}
// These settings will execute infinite retries on retriable
exceptions. They *may* be overridden via configs passed to the worker,
// but this may compromise the delivery guarantees of Kafka Connect.
producerProps.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG,
Integer.toString(Integer.MAX_VALUE));
{code}
The comment about delivery guarantees is a little vague, but I think mainly it
is what was discussed above about ensuring at least once delivery. Note that
none of the default configs including request timeout or delivery timeout can
avoid duplicates in all cases. For that idempotence is needed. It is worth
considering separately for connect whether that should be the default.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)