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) {
我正在尝试实现 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) {