> ... why proto is not initilizing is needed. ... It is for bootstrapping a new, empty server S and letting it join an existing cluster.
S: When it starts, it transits NEW -> STARTING S: It checks if it is in the startup conf. If yes, transits STARTING -> RUNNING and starts a FollowerState. If no, remains in STARTING. The leader bootstraps S by sending a snapshot, if there is any, and log entries. When the bootstrap process is ongoing, it sets AppendEntriesRequestProto.initializing to true. Then, the server S remains in STARTING and won't start a FollowerState since it is not ready. Tsz-Wo
