diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2022-04-30 05:08:56 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-30 05:08:56 -0700 |
| commit | b2a96cee21aac22c71538ce98ac188d6e3c89fbd (patch) | |
| tree | 5ee47cfe0d004bf508032bc8cdd0508b31b34b56 | |
| parent | d71a1fd07770d45f334d7776ab791d317b94f133 (diff) | |
| parent | 03aec9ce7ea94c11d92f53e419685b7127347eb1 (diff) | |
| download | seaweedfs-b2a96cee21aac22c71538ce98ac188d6e3c89fbd.tar.xz seaweedfs-b2a96cee21aac22c71538ce98ac188d6e3c89fbd.zip | |
Merge pull request #2989 from kmlebedev/issues/2987
| -rw-r--r-- | weed/server/master_grpc_server_raft.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/weed/server/master_grpc_server_raft.go b/weed/server/master_grpc_server_raft.go index 37491b3df..258b6beac 100644 --- a/weed/server/master_grpc_server_raft.go +++ b/weed/server/master_grpc_server_raft.go @@ -11,6 +11,10 @@ import ( func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_pb.RaftListClusterServersRequest) (*master_pb.RaftListClusterServersResponse, error) { resp := &master_pb.RaftListClusterServersResponse{} + if ms.Topo.HashicorpRaft == nil { + return resp, nil + } + servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers for _, server := range servers { @@ -25,6 +29,11 @@ func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_ func (ms *MasterServer) RaftAddServer(ctx context.Context, req *master_pb.RaftAddServerRequest) (*master_pb.RaftAddServerResponse, error) { resp := &master_pb.RaftAddServerResponse{} + + if ms.Topo.HashicorpRaft == nil { + return resp, nil + } + if ms.Topo.HashicorpRaft.State() != raft.Leader { return nil, fmt.Errorf("raft add server %s failed: %s is no current leader", req.Id, ms.Topo.HashicorpRaft.String()) } @@ -45,6 +54,10 @@ func (ms *MasterServer) RaftAddServer(ctx context.Context, req *master_pb.RaftAd func (ms *MasterServer) RaftRemoveServer(ctx context.Context, req *master_pb.RaftRemoveServerRequest) (*master_pb.RaftRemoveServerResponse, error) { resp := &master_pb.RaftRemoveServerResponse{} + if ms.Topo.HashicorpRaft == nil { + return resp, nil + } + if ms.Topo.HashicorpRaft.State() != raft.Leader { return nil, fmt.Errorf("raft remove server %s failed: %s is no current leader", req.Id, ms.Topo.HashicorpRaft.String()) } |
