RP C вызов не может найти метод - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь реализовать алгоритм консенсуса Raft, но по какой-то причине возникают проблемы с использованием вызовов RP C. Я использую labrp c. go для выполнения вызовов.

Моя подпись функции:

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

и вызов, который я делаю

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

Raft struct:

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

Но я продолжаю получать эту ошибку:

labrp c .Service.dispatch (): unknown method RequestVotes in Raft.RequestVotes; ожидает один из []

У меня также есть несколько других Raft. методов, поэтому должен ли , ожидающий одного из [] , быть непустым?

1 Ответ

0 голосов
/ 15 июля 2020

Методы RP C не распознавались как методы RP C, поскольку я явно возвращал bool. Изменение кода для возврата void (полное удаление возврата) устранило проблему.

Обновленная подпись функции:

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