mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
fix(server): set joinIndex when recovered
This commit is contained in:
@@ -232,6 +232,7 @@ func (e *Etcd) Run() {
|
|||||||
DataDir: e.Config.DataDir,
|
DataDir: e.Config.DataDir,
|
||||||
}
|
}
|
||||||
e.StandbyServer = server.NewStandbyServer(ssConfig, client)
|
e.StandbyServer = server.NewStandbyServer(ssConfig, client)
|
||||||
|
e.StandbyServer.SetRaftServer(raftServer)
|
||||||
|
|
||||||
// Generating config could be slow.
|
// Generating config could be slow.
|
||||||
// Put it here to make listen happen immediately after peer-server starting.
|
// Put it here to make listen happen immediately after peer-server starting.
|
||||||
@@ -347,6 +348,7 @@ func (e *Etcd) runServer() {
|
|||||||
raftServer.SetElectionTimeout(electionTimeout)
|
raftServer.SetElectionTimeout(electionTimeout)
|
||||||
raftServer.SetHeartbeatInterval(heartbeatInterval)
|
raftServer.SetHeartbeatInterval(heartbeatInterval)
|
||||||
e.PeerServer.SetRaftServer(raftServer, e.Config.Snapshot)
|
e.PeerServer.SetRaftServer(raftServer, e.Config.Snapshot)
|
||||||
|
e.StandbyServer.SetRaftServer(raftServer)
|
||||||
|
|
||||||
e.PeerServer.SetJoinIndex(e.StandbyServer.JoinIndex())
|
e.PeerServer.SetJoinIndex(e.StandbyServer.JoinIndex())
|
||||||
e.setMode(PeerMode)
|
e.setMode(PeerMode)
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ func (s *PeerServer) FindCluster(discoverURL string, peers []string) (toStart bo
|
|||||||
// TODO(yichengq): Think about the action that should be done
|
// TODO(yichengq): Think about the action that should be done
|
||||||
// if it cannot connect any of the previous known node.
|
// if it cannot connect any of the previous known node.
|
||||||
log.Debugf("%s is restarting the cluster %v", name, possiblePeers)
|
log.Debugf("%s is restarting the cluster %v", name, possiblePeers)
|
||||||
|
s.SetJoinIndex(s.raftServer.CommitIndex())
|
||||||
toStart = true
|
toStart = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,8 +36,9 @@ type standbyInfo struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type StandbyServer struct {
|
type StandbyServer struct {
|
||||||
Config StandbyServerConfig
|
Config StandbyServerConfig
|
||||||
client *Client
|
client *Client
|
||||||
|
raftServer raft.Server
|
||||||
|
|
||||||
standbyInfo
|
standbyInfo
|
||||||
joinIndex uint64
|
joinIndex uint64
|
||||||
@@ -62,6 +63,10 @@ func NewStandbyServer(config StandbyServerConfig, client *Client) *StandbyServer
|
|||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *StandbyServer) SetRaftServer(raftServer raft.Server) {
|
||||||
|
s.raftServer = raftServer
|
||||||
|
}
|
||||||
|
|
||||||
func (s *StandbyServer) Start() {
|
func (s *StandbyServer) Start() {
|
||||||
s.Lock()
|
s.Lock()
|
||||||
defer s.Unlock()
|
defer s.Unlock()
|
||||||
@@ -237,7 +242,7 @@ func (s *StandbyServer) syncCluster(peerURLs []string) error {
|
|||||||
func (s *StandbyServer) join(peer string) error {
|
func (s *StandbyServer) join(peer string) error {
|
||||||
for _, url := range s.ClusterURLs() {
|
for _, url := range s.ClusterURLs() {
|
||||||
if s.Config.PeerURL == url {
|
if s.Config.PeerURL == url {
|
||||||
s.joinIndex = 0
|
s.joinIndex = s.raftServer.CommitIndex()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user