RPC 调用找不到方法
Posted
技术标签:
【中文标题】RPC 调用找不到方法【英文标题】:RPC call cannot find method 【发布时间】:2020-07-12 23:43:01 【问题描述】:我正在尝试实现 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(): Raft.RequestVotes 中的未知方法 RequestVotes;期待 [] 之一
我还有其他几个 Raft.
方法,那么 期望 [] 之一应该是非空的吗?
【问题讨论】:
【参考方案1】:RPC 方法未被识别为 RPC 方法,因为我明确返回 bool
。将代码更改为 return void(完全删除 return)解决了这个问题。
更新的函数签名:
func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply)
【讨论】:
以上是关于RPC 调用找不到方法的主要内容,如果未能解决你的问题,请参考以下文章