diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2020-10-04 11:41:10 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-04 11:41:10 -0700 |
| commit | b5974066991d8cd64173f8990c30de14aed8ff5e (patch) | |
| tree | 19566db33fe10a2d0689e970ea3b7899e93369ca | |
| parent | 8c8b8e2835801992ecd75349281637ed8ecb88cd (diff) | |
| parent | 702b1cb8762283b000c8ff782c7dc658bd223b55 (diff) | |
| download | seaweedfs-b5974066991d8cd64173f8990c30de14aed8ff5e.tar.xz seaweedfs-b5974066991d8cd64173f8990c30de14aed8ff5e.zip | |
Merge pull request #1507 from ustuzhanin/raft_remove_peers
Raft remove peers
| -rw-r--r-- | weed/server/raft_server.go | 17 | ||||
| -rw-r--r-- | weed/server/raft_server_handlers.go | 14 |
2 files changed, 26 insertions, 5 deletions
diff --git a/weed/server/raft_server.go b/weed/server/raft_server.go index 7045437e8..66a6734e3 100644 --- a/weed/server/raft_server.go +++ b/weed/server/raft_server.go @@ -104,7 +104,24 @@ func NewRaftServer(grpcDialOption grpc.DialOption, peers []string, serverAddr, d if err := s.raftServer.AddPeer(peer, pb.ServerToGrpcAddress(peer)); err != nil { return nil, err } + } + // Remove deleted peers + if raftResumeState { + for existsPeerName, _ := range s.raftServer.Peers() { + exists := false + for _, peer := range s.peers { + if peer == existsPeerName { + exists = true + } + } + if !exists { + if err := s.raftServer.RemovePeer(existsPeerName); err != nil { + glog.V(0).Infoln(err) + return nil, err + } + } + } } s.GrpcServer = raft.NewGrpcServer(s.raftServer) diff --git a/weed/server/raft_server_handlers.go b/weed/server/raft_server_handlers.go index fd38cb977..252570eab 100644 --- a/weed/server/raft_server_handlers.go +++ b/weed/server/raft_server_handlers.go @@ -1,20 +1,24 @@ package weed_server import ( + "github.com/chrislusf/seaweedfs/weed/storage/needle" "net/http" ) type ClusterStatusResult struct { - IsLeader bool `json:"IsLeader,omitempty"` - Leader string `json:"Leader,omitempty"` - Peers []string `json:"Peers,omitempty"` + IsLeader bool `json:"IsLeader,omitempty"` + Leader string `json:"Leader,omitempty"` + Peers []string `json:"Peers,omitempty"` + MaxVolumeId needle.VolumeId `json:"MaxVolumeId,omitempty"` } func (s *RaftServer) StatusHandler(w http.ResponseWriter, r *http.Request) { ret := ClusterStatusResult{ - IsLeader: s.topo.IsLeader(), - Peers: s.Peers(), + IsLeader: s.topo.IsLeader(), + Peers: s.Peers(), + MaxVolumeId: s.topo.GetMaxVolumeId(), } + if leader, e := s.topo.Leader(); e == nil { ret.Leader = leader } |
