[
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)