aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2020-10-04 11:41:10 -0700
committerGitHub <noreply@github.com>2020-10-04 11:41:10 -0700
commitb5974066991d8cd64173f8990c30de14aed8ff5e (patch)
tree19566db33fe10a2d0689e970ea3b7899e93369ca
parent8c8b8e2835801992ecd75349281637ed8ecb88cd (diff)
parent702b1cb8762283b000c8ff782c7dc658bd223b55 (diff)
downloadseaweedfs-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.go17
-rw-r--r--weed/server/raft_server_handlers.go14
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
}