Hi Asad, Servers A, B and C have the same replicated raft log and the setConfiguration transactions are committed to the raft log. A server can have a different view only if it is lagged behind. For example, 1) the cluster starts with conf(A, B, C) 2) Server A is disconnected from the network at log index 10. 3) Call setConfiguration with conf(B, C). Servers B and C commit it to the log, say at index 15. As long as Server A has not updated its log to index 15, it will think that the cluster conf is conf(A, B, C). However, B and C will think that the cluster conf is conf(B, C).
Since it requires a majority in the old conf and a majority in the new conf to commit a setConfiguration log entry, some combinations are impossible, e.g. B thinks cluster is conf(A,B) and C thinks cluster is conf(A,C) at the same time. Suppose conf(A,B) has a smaller log index than conf(A,C). In order to change conf(A,B) to any other conf, it requires a majority of conf(A,B) (the old conf). Since it only has two nodes, the majority is also two. Both of them must have committed the setConfiguration log entry. Tsz-Wo
