Open
Description
Hi, @wenweihu86 , I think there's an issue in Code Snippet 1
because configuration.getServersList
also includes the node itself. If peerMap.get(server.getServerId())
refers to the node itself, the return value will be null, and calling appendEntries(null) will trigger a null pointer exception(see Code Snippet 2
peer.getNextIndex()
).
Code Snippet 1. Replicate method.
Code Snippet 2. AppendEntries method.
Suggested fix:
for (RaftProto.Server server : configuration.getServersList()) {
+ if (server.getServerId() == localServer.getServerId()) {
+ continue;
+ }
final Peer peer = peerMap.get(server.getServerId());
executorService.submit(new Runnable() {
@Override
public void run() {
appendEntries(peer);
}
});
}
I'm looking forward to your confirmation, and would be happy to help fix the issue if needed.
Metadata
Metadata
Assignees
Labels
No labels