[ 
https://issues.apache.org/jira/browse/KAFKA-13673?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mickael Maison updated KAFKA-13673:
-----------------------------------
    Fix Version/s: 3.0.1

> disable idempotent producer when acks/retries/max.in.flight config conflicts
> ----------------------------------------------------------------------------
>
>                 Key: KAFKA-13673
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13673
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Luke Chen
>            Assignee: Luke Chen
>            Priority: Major
>             Fix For: 3.0.1
>
>
> In KAFKA-13598, we enabled idempotent producer by default. When idempotence 
> is enabled, there are some constraints:
>  - acks=all
>  - retries > 0
>  - max.in.flight.requests.per.connection <= 5
> We found the default idempotence enabled setting will break some tests 
> because the `acks`, `retries` config are overridden, and conflict with 
> idempotence. And we believe there are many users also overriding these 
> configs in current producers. We should avoid to break the existing producers 
> after user upgrading to the newer version. So, we won't enable idempotence 
> when the `enable.idempotence` is not set explicitly, and `acks`, `retries`, 
> `max.in.flight.requests.per.connection` config is conflicting with 
> idempotence setting. Below are some example cases the user will have:
>  # if user *doesn't* set enable.idempotence: 
> a. {{enable.idempotence}} unset && {{acks}} unset => enable idempotence (this 
> was the intent behind the 3.0 change I think)
> b. {{enable.idempotence}} unset && {{acks=all}} => enable idempotence
> c. {{enable.idempotence}} unset && {{acks!=all}} => disable idempotence 
> ({*}the case we will add in the Jira to avoid break existing producers{*})
>  # if user enable/disable enable.idempotence explicitly:
> a. {{enable.idempotence=true}} && {{acks=all}} => enable idempotence
> b. {{enable.idempotence=false}} => disable idempotence
> c. {{enable.idempotence=true}} && {{acks!=all}} => throw exception ({*}still 
> throw exception in this case{*})
>  PS. the above cases only use `acks` config for example. It also apply for 
> `retries` and `max.in.flight.requests.per.connection` config.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to