Matthias J. Sax created KAFKA-8957: -------------------------------------- Summary: Improve docs about `min.isr.` and `acks=all` Key: KAFKA-8957 URL: https://issues.apache.org/jira/browse/KAFKA-8957 Project: Kafka Issue Type: Improvement Components: clients, core Reporter: Matthias J. Sax
The current docs are as follows: {code:java} acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee.{code} {code:java} min.in.sync.replicas When a producer sets acks to "all" (or -1), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend). When used together, `min.insync.replicas` and `acks` allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of "all". This will ensure that the producer raises an exception if a majority of replicas do not receive a write. {code} The miss leading part seems to be: {noformat} the minimum number of replicas that must acknowledge the write {noformat} That could be interpreted to mean that the producer request can return *_before_* all replicas acknowledge the write. However, min.irs is a configuration that aims to specify how many replicase must be online, to consider a partition to be available. The actual behavior is the following (with replication factor = 3 and min.isr = 2) * If all three replicas are in-sync, brokers only ack to the producer after all three replicas got the data. (ie, both follows need to ack) * However, if one replicas lags (is not in-sync any longer), we are also ok to ack to the producer after the remaining in-sync follower acked. It's *_not_* the case, that if all three replicase are in-sync, brokers ack to the producer after one follower acked to the leader. -- This message was sent by Atlassian Jira (v8.3.4#803005)