fix: admin does not show all master servers #7999 (#8002)

This commit is contained in:
Chris Lu
2026-01-11 12:31:46 -08:00
committed by GitHub
parent 844859de7f
commit d7c30fdb2b

View File

@@ -14,11 +14,12 @@ func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_
resp := &master_pb.RaftListClusterServersResponse{} resp := &master_pb.RaftListClusterServersResponse{}
ms.Topo.RaftServerAccessLock.RLock() ms.Topo.RaftServerAccessLock.RLock()
if ms.Topo.HashicorpRaft == nil { if ms.Topo.HashicorpRaft == nil && ms.Topo.RaftServer == nil {
ms.Topo.RaftServerAccessLock.RUnlock() ms.Topo.RaftServerAccessLock.RUnlock()
return resp, nil return resp, nil
} }
if ms.Topo.HashicorpRaft != nil {
servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers servers := ms.Topo.HashicorpRaft.GetConfiguration().Configuration().Servers
_, leaderId := ms.Topo.HashicorpRaft.LeaderWithID() _, leaderId := ms.Topo.HashicorpRaft.LeaderWithID()
ms.Topo.RaftServerAccessLock.RUnlock() ms.Topo.RaftServerAccessLock.RUnlock()
@@ -31,6 +32,30 @@ func (ms *MasterServer) RaftListClusterServers(ctx context.Context, req *master_
IsLeader: server.ID == leaderId, 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: 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 return resp, nil
} }