In your scenario, you are receiving acks from 3 replicas while it is
possible to have 4 in the ISR. This means that one replica can be up to
4000 messages (by default) behind others. If a leader crashes, there is 33%
chance this replica will become the new leader, thereby losing up to 4000
messages.

acks = all requires all ISR to ack as long as they are in the ISR,
protecting you from this scenario (but leading to high latency if a replica
is hanging and is just about to drop out of the ISR).

Also, note that in future versions acks > 1 was deprecated, to protect
against such subtle mistakes.

Gwen

On Fri, Nov 27, 2015 at 12:28 AM, Andreas Flinck <
andreas.fli...@digitalroute.com> wrote:

> Hi all
>
> The reason why I need to know is that we have seen an issue when using
> acks=all, forcing us to quickly find an alternative. I leave the issue out
> of this post, but will probably come back to that!
>
> My question is about acks=all and min.insync.replicas property. Since we
> have found a workaround for an issue by using acks>1 instead of all
> (absolutely no clue why at this moment), I would like to know what benefit
> you get from e.g. acks=all and min.insync.replicas=3 instead of using
> acks=3 in a 5 broker cluster and replication-factor of 4. To my
> understanding you would get the exact level of durability and security from
> using either of those settings. However, I suspect this is not quite the
> case from finding hints without proper explanation that acks=all is
> preferred.
>
>
> Regards
> Andreas

Reply via email to