Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Producer config nameFromTo
enable.idempotencefalsetrue
acks1all

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`:

  1. 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`).
    1. use producers with release version >= 3.0
    2. use brokers with release version < 2.8use the default value for config `enable.idempotence` in their producers
  2. 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`).
    1. use producers with release version >= 3.0
    2. have any topic using the message format < V2 while producers with release version >= 3.0 will produce to this topic
    3. 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

...