diff options
Diffstat (limited to 'weed/server/master_grpc_server_cluster.go')
| -rw-r--r-- | weed/server/master_grpc_server_cluster.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/weed/server/master_grpc_server_cluster.go b/weed/server/master_grpc_server_cluster.go index 4a61d2e29..a5c82627a 100644 --- a/weed/server/master_grpc_server_cluster.go +++ b/weed/server/master_grpc_server_cluster.go @@ -2,7 +2,10 @@ package weed_server import ( "context" + "github.com/chrislusf/seaweedfs/weed/cluster" + "github.com/chrislusf/seaweedfs/weed/pb" "github.com/chrislusf/seaweedfs/weed/pb/master_pb" + "math/rand" ) func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.ListClusterNodesRequest) (*master_pb.ListClusterNodesResponse, error) { @@ -12,10 +15,26 @@ func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.Lis for _, node := range clusterNodes { resp.ClusterNodes = append(resp.ClusterNodes, &master_pb.ListClusterNodesResponse_ClusterNode{ - Address: string(node.Address), - Version: node.Version, + Address: string(node.Address), + Version: node.Version, IsLeader: ms.Cluster.IsOneLeader(node.Address), }) } return resp, nil } + +func (ms *MasterServer) GetOneFiler() pb.ServerAddress { + + clusterNodes := ms.Cluster.ListClusterNode(cluster.FilerType) + + var filers []pb.ServerAddress + for _, node := range clusterNodes { + if ms.Cluster.IsOneLeader(node.Address) { + filers = append(filers, node.Address) + } + } + if len(filers) > 0 { + return filers[rand.Intn(len(filers))] + } + return "localhost:8888" +} |
