1 回答

TA贡献1998条经验 获得超6个赞
我做的。
我刚刚在 goraft-library 代码中插入了新行,其中发生了领导者选择。
因此,只需转到 goraft 的 server.go 文件并进行以下更改即可。
原始 Server.go - 行 [287-309]
// Sets the state of the server.
func (s *server) setState(state string) {
s.mutex.Lock()
defer s.mutex.Unlock()
// Temporarily store previous values.
prevState := s.state
prevLeader := s.leader
// Update state and leader.
s.state = state
if state == Leader {
s.leader = s.Name()
s.syncedPeer = make(map[string]bool)
}
// Dispatch state and leader change events.
s.DispatchEvent(newEvent(StateChangeEventType, s.state, prevState))
if prevLeader != s.leader {
s.DispatchEvent(newEvent(LeaderChangeEventType, s.leader, prevLeader))
}
}
编辑 Server.go
// Sets the state of the server.
func (s *server) setState(state string) {
s.mutex.Lock()
defer s.mutex.Unlock()
// Temporarily store previous values.
prevState := s.state
prevLeader := s.leader
// Update state and leader.
s.state = state
if state == Leader {
s.leader = s.Name()
s.syncedPeer = make(map[string]bool)
}
// Dispatch state and leader change events.
s.DispatchEvent(newEvent(StateChangeEventType, s.state, prevState))
if prevLeader != s.leader {
fmt.Println("I am the Leader..!! ",s.connectionString," ",s.path)
s.DispatchEvent(newEvent(LeaderChangeEventType, s.leader, prevLeader))
}
}
所以它会在活动主服务器的控制台上打印连接Stirng以及当前服务器的存储路径。
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报