...
Producer config name | From | To |
---|---|---|
enable.idempotence | false | true |
acks | 1 | all |
2. Producer ACL needs required for enabling idempotence will change from `IDEMPOTENT_WRITE` to `WRITE` in release version 2.8
...
Besides the public interface changes above, we will remove `IDEMPOTENT_WRITE` in release version 2.8 because it's kind of trivial by practice.
We are relaxing the ACL restriction from `IDEMPOTENT_WRITE` to `WRITE` earlier and changing the producer defaults later in order to give the community users enough time to upgrade their broker first. So their later client-side upgrading won't get blocked by the `IDEMPOTENT_WRITE` ACL required by the old version brokers for idempotence production.
Compatibility, Deprecation, and Migration Plan
For changing the default of `acks`, there won't be any compatibility issues. But several compatibility issues may come up occur for changing the default of `enable.idempotence`:
- In the scenario below, people will need to either a) grant the producers the `IDEMPOTENT_WRITE` access or b) change their producer config to explicitly disable the idempotence (set `enable.idempotence = false`).
- use producers with release version >= 3.0
- use brokers with release version < 2.8use the default value for config `enable.idempotence` in their producers
- In the scenario below, people will need to either a) upgrade their topic format version >= V2 or b) change their producer config to explicitly disable the idempotence (set `enable.idempotence = false`).
- use producers with release version >= 3.0
- have any topic using the message format < V2 while producers with release version >= 3.0 will produce to this topic
- use the default value for config `enable.idempotence` in their producers
Rejected Alternatives
There's an alternative way to implement a fallback semantics on `enable.idempotence` to mitigate the compatibility issue. Specifically, the by default, the producer will set `enable.idempotence` as `suggested` by default, a new option, to let the producer and brokers decide if idempotence can be enabled or not. However, since the fallback
...