Browse Source

Fix Admin UI master list showing gRPC port instead of HTTP port (#8869)

* Fix Admin UI master list showing gRPC port instead of HTTP port for followers (#8867)

Raft stores server addresses as gRPC addresses. The Admin UI was using
these addresses directly via ToHttpAddress(), which cannot extract the
HTTP port from a plain gRPC address. Use GrpcAddressToServerAddress()
to properly convert gRPC addresses back to HTTP addresses.

* Use httpAddress consistently as masterMap key

Address review feedback: masterInfo.Address (HTTP form) was already
computed but the raw address was used as the map key, causing
potential key mismatches between topology and raft data.
pull/8392/merge
Chris Lu 2 days ago
committed by GitHub
parent
commit
44d5cb8f90
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 10
      weed/admin/dash/admin_server.go

10
weed/admin/dash/admin_server.go

@ -943,7 +943,7 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) {
leaderCount++ leaderCount++
} }
masterMap[master.Address] = masterInfo
masterMap[masterInfo.Address] = masterInfo
} }
// Then, get additional master information from Raft cluster // Then, get additional master information from Raft cluster
@ -955,11 +955,11 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) {
// Process each raft server // Process each raft server
for _, server := range resp.ClusterServers { for _, server := range resp.ClusterServers {
address := server.Address
httpAddress := pb.ServerAddress(address).ToHttpAddress()
// Raft stores gRPC addresses, convert to HTTP address
httpAddress := pb.GrpcAddressToServerAddress(server.Address)
// Update existing master info or create new one // Update existing master info or create new one
if masterInfo, exists := masterMap[address]; exists {
if masterInfo, exists := masterMap[httpAddress]; exists {
// Update existing master with raft data // Update existing master with raft data
masterInfo.IsLeader = server.IsLeader masterInfo.IsLeader = server.IsLeader
masterInfo.Suffrage = server.Suffrage masterInfo.Suffrage = server.Suffrage
@ -970,7 +970,7 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) {
IsLeader: server.IsLeader, IsLeader: server.IsLeader,
Suffrage: server.Suffrage, Suffrage: server.Suffrage,
} }
masterMap[address] = masterInfo
masterMap[httpAddress] = masterInfo
} }
if server.IsLeader { if server.IsLeader {

Loading…
Cancel
Save