func (rb *raftBackend) addRaftToMyGroup(ctx context.Context, newRaftId uint64) error {
	cc := raftpb.ConfChange{
		Type:   raftpb.ConfChangeAddLearnerNode,
		ID:     rb.latestConfChangeId + 1,
		NodeID: newRaftId,
	}
	return rb.raftNode.ProposeConfChange(ctx, cc)
}
// I will need to have a long inner monologue about
// when to add a voter and when to add a learner.
// Adding voters comes with the increasing overhead
// of the raft protocol.
// Adding learners and never promoting them to
// voters puts us in danger to lose data.
I will need to have a long inner monologue about
when to add a voter and when to add a learner.
Adding voters comes with the increasing overhead
of the raft protocol.
Adding learners and never promoting them to
voters puts us in danger to lose data.
// I will need to have a long inner monologue about // when to add a voter and when to add a learner . // Adding voters comes with the increasing overhead // of the raft protocol . // Adding learners and never promoting them to // voters puts us in danger to lose data .
func (rb *raftBackend) addRaftToMyGroup(ctx context.Context, newRaftId uint64) error {
	cc := raftpb.ConfChange{
		Type:   raftpb.ConfChangeAddLearnerNode,
		ID:     rb.latestConfChangeId + 1,
		NodeID: newRaftId,
	}
	return rb.raftNode.ProposeConfChange(ctx, cc)
}
func ( rb * raftBackend ) addRaftToMyGroup ( ctx context . Context , newRaftId uint64 ) error { cc := raftpb . ConfChange { Type : raftpb . ConfChangeAddLearnerNode , ID : rb . latestConfChangeId + 1 , NodeID : newRaftId , } return rb . raftNode . ProposeConfChange ( ctx , cc ) }
I will need to have a long inner monologue about
when to add a voter and when to add a learner.
I will need to have a long inner monologue about when to add a voter and when to add a learner .