Browse Source

fix: admin does not show all master servers #7999

pull/8002/head
Chris Lu 2 days ago
parent
commit
bdb6844a9e
  1. 43
      weed/server/master_grpc_server_raft.go

43
weed/server/master_grpc_server_raft.go

@ -14,22 +14,47 @@ func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_
resp := &master_pb.RaftListClusterServersResponse{}
ms.Topo.RaftServerAccessLock.RLock()
if ms.Topo.HashicorpRaft == nil {
if ms.Topo.HashicorpRaft == nil && ms.Topo.RaftServer == nil {
ms.Topo.RaftServerAccessLock.RUnlock()
return resp, nil
}
servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers
_, leaderId := ms.Topo.HashicorpRaft.LeaderWithID()
ms.Topo.RaftServerAccessLock.RUnlock()
if ms.Topo.HashicorpRaft != nil {
servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers
_, leaderId := ms.Topo.HashicorpRaft.LeaderWithID()
ms.Topo.RaftServerAccessLock.RUnlock()
for _, server := range servers {
for _, server := range servers {
resp.ClusterServers = append(resp.ClusterServers, &master_pb.RaftListClusterServersResponse_ClusterServers{
Id: string(server.ID),
Address: string(server.Address),
Suffrage: server.Suffrage.String(),
IsLeader: server.ID == leaderId,
})
}
} else if ms.Topo.RaftServer != nil {
peers := ms.Topo.RaftServer.Peers()
leader := ms.Topo.RaftServer.Leader()
currentServerName := ms.Topo.RaftServer.Name()
ms.Topo.RaftServerAccessLock.RUnlock()
// Add the current server itself (Peers() only returns other peers)
resp.ClusterServers = append(resp.ClusterServers, &master_pb.RaftListClusterServersResponse_ClusterServers{
Id: string(server.ID),
Address: string(server.Address),
Suffrage: server.Suffrage.String(),
IsLeader: server.ID == leaderId,
Id: currentServerName,
Address: string(ms.option.Master),
Suffrage: "Voter",
IsLeader: currentServerName == leader,
})
// Add all other peers
for _, peer := range peers {
resp.ClusterServers = append(resp.ClusterServers, &master_pb.RaftListClusterServersResponse_ClusterServers{
Id: peer.Name,
Address: peer.ConnectionString,
Suffrage: "Voter",
IsLeader: peer.Name == leader,
})
}
}
return resp, nil
}

Loading…
Cancel
Save