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)

Reply via email to