From 44d5cb8f90284b0c58c7f57744ea64b6be74a9bd Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 1 Apr 2026 09:43:50 -0700 Subject: [PATCH] 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. --- weed/admin/dash/admin_server.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/weed/admin/dash/admin_server.go b/weed/admin/dash/admin_server.go index 67b7e29f6..ed59b22f4 100644 --- a/weed/admin/dash/admin_server.go +++ b/weed/admin/dash/admin_server.go @@ -943,7 +943,7 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) { leaderCount++ } - masterMap[master.Address] = masterInfo + masterMap[masterInfo.Address] = masterInfo } // Then, get additional master information from Raft cluster @@ -955,11 +955,11 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) { // Process each raft server 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 - if masterInfo, exists := masterMap[address]; exists { + if masterInfo, exists := masterMap[httpAddress]; exists { // Update existing master with raft data masterInfo.IsLeader = server.IsLeader masterInfo.Suffrage = server.Suffrage @@ -970,7 +970,7 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) { IsLeader: server.IsLeader, Suffrage: server.Suffrage, } - masterMap[address] = masterInfo + masterMap[httpAddress] = masterInfo } if server.IsLeader {