RPC 调用找不到方法

RPC call cannot find method

我正在尝试实现 Raft 共识算法,但由于某种原因在使用 RPC 调用时遇到问题。我正在使用 labrpc.go 拨打电话。

我的函数签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) bool

以及我正在打的电话

if err := rf.peers[peerIdx].Call("Raft.RequestVotes", args, &reply); err == false {

筏结构:

type Raft struct {
... 
peers     []*labrpc.ClientEnd // RPC end points of all peers
...
}

但我不断收到此错误:

labrpc.Service.dispatch(): unknown method RequestVotes in Raft.RequestVotes; expecting one of []

我还有其他几个 Raft. 方法,那么 期望 [] 之一应该是非空的吗?

RPC 方法未被识别为 RPC 方法,因为我明确 returning bool。将代码更改为 return void(完全删除 return)解决了问题。

更新函数签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) {