// send persists state to stable storage and then sends to its mailbox. func (r *raft) send(m pb.Message) { m.From = r.id // do not attach term to MsgProp // proposals are a way to forward to the leader and // should be treated as local message. if m.Type != pb.MsgProp { m.Term = r.Term } r.msgs = append(r.msgs, m) }
// Send a message. Returns false if the message was dropped. func (rttc *raftTransportTestContext) Send( from, to roachpb.ReplicaDescriptor, rangeID roachpb.RangeID, msg raftpb.Message, ) bool { msg.To = uint64(to.ReplicaID) msg.From = uint64(from.ReplicaID) req := &storage.RaftMessageRequest{ RangeID: rangeID, Message: msg, ToReplica: to, FromReplica: from, } return rttc.transports[from.NodeID].SendAsync(req) }
// Send a message. Returns false if the message was dropped. func (rttc *raftTransportTestContext) Send( from, to roachpb.ReplicaDescriptor, rangeID roachpb.RangeID, msg raftpb.Message, ) bool { msg.To = uint64(to.ReplicaID) msg.From = uint64(from.ReplicaID) req := &storage.RaftMessageRequest{ RangeID: rangeID, Message: msg, ToReplica: to, FromReplica: from, } sender := rttc.transports[from.NodeID].MakeSender( func(err error, _ roachpb.ReplicaDescriptor) { if err != nil && !grpcutil.IsClosedConnection(err) && !testutils.IsError(err, channelServerBrokenRangeMessage) { rttc.t.Fatal(err) } }) return sender.SendAsync(req) }
// send persists state to stable storage and then sends to its mailbox. func (r *raft) send(m pb.Message) { m.From = r.id if m.Type == pb.MsgVote || m.Type == pb.MsgPreVote { if m.Term == 0 { // PreVote RPCs are sent at a term other than our actual term, so the code // that sends these messages is responsible for setting the term. panic(fmt.Sprintf("term should be set when sending %s", m.Type)) } } else { if m.Term != 0 { panic(fmt.Sprintf("term should not be set when sending %s (was %d)", m.Type, m.Term)) } // do not attach term to MsgProp, MsgReadIndex // proposals are a way to forward to the leader and // should be treated as local message. // MsgReadIndex is also forwarded to leader. if m.Type != pb.MsgProp && m.Type != pb.MsgReadIndex { m.Term = r.Term } } r.msgs = append(r.msgs, m) }
// send persists state to stable storage and then sends to its mailbox. func (r *raft) send(m pb.Message) { m.From = r.id m.Term = r.Term r.msgs = append(r.msgs, m) }