Hi,

A would not have confirmed in this case to the client the write. Sending
ACK means the followers have written the transaction to disc. Leader (in
this case A) still needs to send COMMIT message to the followers.
It goes like this:
- LEADER(A) receives a write, so it creates a transaction and send it to
all FOLLOWERs.
- FOLLOWERs receive the transaction and writes it to disc (txnlog). It does
NOT apply to the datatree.
- After writing to disc FOLLOWERs send ACK to LEADER(A) (Nothing at this
point is acknowledged to the client)
- After LEADER(A) receives quorum of ACK, then, and only then will it apply
to the datatree and send COMMIT message to all FOLLOWERs to do the same.
And also ACK to client that the write is complete. And at this point the
data sent by the client is saved in the txnlogs of the quorum.

Hope this helps,

Regards,
Norbert

On Sat, Feb 15, 2020 at 5:20 AM <[email protected]> wrote:

> How do you know A has sent the ack to client before he die ?
>
> 发自我的 iPhone
>
> > 在 2020年2月15日,09:15,jonefeewang <[email protected]> 写道:
> >
> > I also have the same question like this below:
> >
> >
> > let's say we have nodes A B C D E, now A is the leader
> >
> > A broadcasts <1,1>,  it reaches B, then A, B die, C D E elect someone,
> > the new system is going to throw away <1,1> since it does not know its
> > existence, right?
> >
> > start from scratch,
> > A broadcasts<1,1> , it reaches all, all send ACK to A, but A dies
> > before receiving the ACK, then BCDE elects someone, and the new leader
> > sees <1,1> in log, so it broadcasts <1,1> to BCDE, which all commit
> > it.  now if we look back, when A dies, the client should get a "write
> > failure", but now after BCDE relection, the written value does get
> > into the system ??? the client and the cluster has an inconsistent view
> ??
> >
> >
> >
> >
> >
> > --
> > Sent from: http://zookeeper-user.578899.n2.nabble.com/
>
>

Reply via email to