|
|
@ -361,19 +361,21 @@ func TestServer_LeaveLeader(t *testing.T) {
|
|
|
|
// Try to join
|
|
|
|
// Try to join
|
|
|
|
joinLAN(t, s2, s1)
|
|
|
|
joinLAN(t, s2, s1)
|
|
|
|
|
|
|
|
|
|
|
|
retry.Run(t, func(r *retry.R) {
|
|
|
|
testrpc.WaitForLeader(t, s1.RPC, "dc1")
|
|
|
|
r.Check(wantPeers(s1, 2))
|
|
|
|
testrpc.WaitForLeader(t, s2.RPC, "dc1")
|
|
|
|
r.Check(wantPeers(s2, 2))
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Issue a leave to the leader
|
|
|
|
// Issue a leave to the leader
|
|
|
|
for _, s := range []*Server{s1, s2} {
|
|
|
|
var err error
|
|
|
|
if !s.IsLeader() {
|
|
|
|
switch {
|
|
|
|
continue
|
|
|
|
case s1.IsLeader():
|
|
|
|
}
|
|
|
|
err = s1.Leave()
|
|
|
|
if err := s.Leave(); err != nil {
|
|
|
|
case s2.IsLeader():
|
|
|
|
t.Fatalf("err: %v", err)
|
|
|
|
err = s2.Leave()
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
t.Fatal("no leader")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
t.Fatal("leave failed: ", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Should lose a peer
|
|
|
|
// Should lose a peer
|
|
|
@ -396,19 +398,21 @@ func TestServer_Leave(t *testing.T) {
|
|
|
|
// Try to join
|
|
|
|
// Try to join
|
|
|
|
joinLAN(t, s2, s1)
|
|
|
|
joinLAN(t, s2, s1)
|
|
|
|
|
|
|
|
|
|
|
|
retry.Run(t, func(r *retry.R) {
|
|
|
|
testrpc.WaitForLeader(t, s1.RPC, "dc1")
|
|
|
|
r.Check(wantPeers(s1, 2))
|
|
|
|
testrpc.WaitForLeader(t, s2.RPC, "dc1")
|
|
|
|
r.Check(wantPeers(s2, 2))
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Issue a leave to the non-leader
|
|
|
|
// Issue a leave to the non-leader
|
|
|
|
for _, s := range []*Server{s1, s2} {
|
|
|
|
var err error
|
|
|
|
if s.IsLeader() {
|
|
|
|
switch {
|
|
|
|
continue
|
|
|
|
case s1.IsLeader():
|
|
|
|
}
|
|
|
|
err = s2.Leave()
|
|
|
|
if err := s.Leave(); err != nil {
|
|
|
|
case s2.IsLeader():
|
|
|
|
t.Fatalf("err: %v", err)
|
|
|
|
err = s1.Leave()
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
t.Fatal("no leader")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
t.Fatal("leave failed: ", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Should lose a peer
|
|
|
|
// Should lose a peer
|
|
|
|