> If the new node goes down and comes back up is it possible it can become
the leader even though it has less transactions  than the existing node?

No, it cannot become the leader since the other node won't vote for it.

> ... is there a guarentee that always the node that has the highest
transaction id will be elected the leader?

For two nodes, yes.  A vote is granted only if the candidate has an equal
or higher transaction index.  The node with a higher index won't vote for
the other node.

A group with two nodes means that any transactions must be replicated to
both nodes before it is committed.  The other node could become the leader
only if they both have the same transaction index.

For more than two nodes, the node with the highest transaction index is not
necessarily elected the leader -- A previous leader may have extra
uncommitted transactions.  In the next election, any node with a
transaction index higher or equal than the majority of the nodes can become
the leader since the nodes with a lower or equal index will vote for it.
In such a case, the previous leader will truncate the uncommitted
transactions when it joins the new leader.

Thanks for your questions!

Tsz-Wo


On Tue, Jun 20, 2023 at 11:45 PM Asad Awadia <[email protected]> wrote:

> A big part of raft is running an odd number of servers
>
> But we are scaling nodes 1 at a time and there are a lot of times where we
> have only 2 nodes in the cluster
>
> If the new node goes down and comes back up is it possible it can become
> the leader even though it has less transactions  than the existing node?
>
> Since there are only 2 nodes - is there a guarentee that always the node
> that has the highest transaction id will be elected the leader?
>
> We are seeing
> 0. Exisiting 1 node cluster with node 1 as the leader
> 1. New node 2 gets added
> 2. Node 1 and 2 are healthy
> 3. Node 2 goes down
> 4. Node 1 is in candidate state
> 5. Node 2 comes back
> 6.  Node 2 becomes leader
>
> Shouldn't node 1 be always the leader?
>

Reply via email to