mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
add snapshot feature
This commit is contained in:
parent
acb66f3428
commit
4b4a7c4976
@ -188,7 +188,8 @@ func Dispatch(server *raft.Server, command Command, w http.ResponseWriter) {
|
|||||||
|
|
||||||
if leaderName =="" {
|
if leaderName =="" {
|
||||||
// no luckey, during the voting process
|
// no luckey, during the voting process
|
||||||
continue
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("forward to ", leaderName)
|
fmt.Println("forward to ", leaderName)
|
||||||
|
23
raftd.go
23
raftd.go
@ -91,11 +91,13 @@ func main() {
|
|||||||
t := transHandler{}
|
t := transHandler{}
|
||||||
|
|
||||||
// Setup new raft server.
|
// Setup new raft server.
|
||||||
server, err = raft.NewServer(name, path, t, nil)
|
server, err = raft.NewServer(name, path, t, s, nil)
|
||||||
//server.DoHandler = DoHandler;
|
//server.DoHandler = DoHandler;
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fatal("%v", err)
|
fatal("%v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.LoadSnapshot()
|
||||||
server.Initialize()
|
server.Initialize()
|
||||||
fmt.Println("1 join as ", server.State(), " term ", server.Term())
|
fmt.Println("1 join as ", server.State(), " term ", server.Term())
|
||||||
// Join to another server if we don't have a log.
|
// Join to another server if we don't have a log.
|
||||||
@ -108,29 +110,38 @@ func main() {
|
|||||||
fmt.Println("3 join as ", server.State(), " term ", server.Term())
|
fmt.Println("3 join as ", server.State(), " term ", server.Term())
|
||||||
if leaderHost == "" {
|
if leaderHost == "" {
|
||||||
fmt.Println("init")
|
fmt.Println("init")
|
||||||
server.SetElectionTimeout(10 * time.Second)
|
//server.SetElectionTimeout(300 * time.Millisecond)
|
||||||
|
//server.SetHeartbeatTimeout(100 * time.Millisecond)
|
||||||
|
server.SetElectionTimeout(3 * time.Second)
|
||||||
server.SetHeartbeatTimeout(1 * time.Second)
|
server.SetHeartbeatTimeout(1 * time.Second)
|
||||||
|
server.StartHeartbeatTimeout()
|
||||||
server.StartLeader()
|
server.StartLeader()
|
||||||
|
|
||||||
// join self
|
// join self
|
||||||
command := &JoinCommand{}
|
command := &JoinCommand{}
|
||||||
command.Name = server.Name()
|
command.Name = server.Name()
|
||||||
|
|
||||||
server.Do(command)
|
server.Do(command)
|
||||||
} else {
|
} else {
|
||||||
server.SetElectionTimeout(10 * time.Second)
|
//server.SetElectionTimeout(300 * time.Millisecond)
|
||||||
|
//server.SetHeartbeatTimeout(100 * time.Millisecond)
|
||||||
|
server.SetElectionTimeout(3 * time.Second)
|
||||||
server.SetHeartbeatTimeout(1 * time.Second)
|
server.SetHeartbeatTimeout(1 * time.Second)
|
||||||
|
server.StartElectionTimeout()
|
||||||
server.StartFollower()
|
server.StartFollower()
|
||||||
|
|
||||||
fmt.Println("4 join as ", server.State(), " term ", server.Term())
|
fmt.Println("4 join as ", server.State(), " term ", server.Term())
|
||||||
Join(server, leaderHost)
|
Join(server, leaderHost)
|
||||||
fmt.Println("success join")
|
fmt.Println("success join")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
server.SetElectionTimeout(10 * time.Second)
|
//server.SetElectionTimeout(300 * time.Millisecond)
|
||||||
|
//server.SetHeartbeatTimeout(100 * time.Millisecond)
|
||||||
|
server.SetElectionTimeout(3 * time.Second)
|
||||||
server.SetHeartbeatTimeout(1 * time.Second)
|
server.SetHeartbeatTimeout(1 * time.Second)
|
||||||
|
server.StartElectionTimeout()
|
||||||
server.StartFollower()
|
server.StartFollower()
|
||||||
}
|
}
|
||||||
|
go server.Snapshot()
|
||||||
// open snapshot
|
// open snapshot
|
||||||
//go server.Snapshot()
|
//go server.Snapshot()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user