diff options
Diffstat (limited to 'weed/server/master_grpc_server_raft.go')
| -rw-r--r-- | weed/server/master_grpc_server_raft.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/weed/server/master_grpc_server_raft.go b/weed/server/master_grpc_server_raft.go index 45a6c7a7e..7f8ad70df 100644 --- a/weed/server/master_grpc_server_raft.go +++ b/weed/server/master_grpc_server_raft.go @@ -3,7 +3,9 @@ package weed_server import ( "context" "fmt" + "github.com/hashicorp/raft" + "github.com/seaweedfs/seaweedfs/weed/cluster" "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" ) @@ -11,11 +13,14 @@ import ( func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_pb.RaftListClusterServersRequest) (*master_pb.RaftListClusterServersResponse, error) { resp := &master_pb.RaftListClusterServersResponse{} + ms.Topo.RaftServerAccessLock.RLock() if ms.Topo.HashicorpRaft == nil { + ms.Topo.RaftServerAccessLock.RUnlock() return resp, nil } servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers + ms.Topo.RaftServerAccessLock.RUnlock() for _, server := range servers { resp.ClusterServers = append(resp.ClusterServers, &master_pb.RaftListClusterServersResponse_ClusterServers{ @@ -30,6 +35,9 @@ 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{} + ms.Topo.RaftServerAccessLock.RLock() + defer ms.Topo.RaftServerAccessLock.RUnlock() + if ms.Topo.HashicorpRaft == nil { return resp, nil } @@ -54,6 +62,9 @@ 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{} + ms.Topo.RaftServerAccessLock.RLock() + defer ms.Topo.RaftServerAccessLock.RUnlock() + if ms.Topo.HashicorpRaft == nil { return resp, nil } |
