diff --git a/weed/admin/dash/admin_data.go b/weed/admin/dash/admin_data.go index c57b10a56..1b689b6dd 100644 --- a/weed/admin/dash/admin_data.go +++ b/weed/admin/dash/admin_data.go @@ -293,14 +293,17 @@ func (s *AdminServer) getMasterNodesStatus() []MasterNode { } raftCallSucceeded = true for _, server := range resp.ClusterServers { - // pb.GrpcAddressToServerAddress calls glog.Fatalf on a parse - // error, so pre-validate the raft address with net.SplitHostPort - // and skip malformed entries instead of taking the process down. + // Skip malformed raft addresses instead of letting an + // unconvertible value into masterMap. if _, _, splitErr := net.SplitHostPort(server.Address); splitErr != nil { glog.Warningf("skip master with invalid raft address %q: %v", server.Address, splitErr) continue } httpAddress := pb.GrpcAddressToServerAddress(server.Address) + if httpAddress == "" { + glog.Warningf("skip master with invalid raft address %q", server.Address) + continue + } masterMap[httpAddress] = MasterNode{ Address: httpAddress, IsLeader: server.IsLeader, diff --git a/weed/admin/dash/admin_server.go b/weed/admin/dash/admin_server.go index d015d571c..c99d92632 100644 --- a/weed/admin/dash/admin_server.go +++ b/weed/admin/dash/admin_server.go @@ -1351,6 +1351,9 @@ func (s *AdminServer) GetClusterMasters() (*ClusterMastersData, error) { for _, server := range resp.ClusterServers { // Raft stores gRPC addresses, convert to HTTP address httpAddress := pb.GrpcAddressToServerAddress(server.Address) + if httpAddress == "" { + continue + } // Update existing master info or create new one if masterInfo, exists := masterMap[httpAddress]; exists { diff --git a/weed/pb/grpc_client_server.go b/weed/pb/grpc_client_server.go index 30e5d63e9..8ba3a16f3 100644 --- a/weed/pb/grpc_client_server.go +++ b/weed/pb/grpc_client_server.go @@ -564,7 +564,7 @@ func GrpcAddressToServerAddress(grpcAddress string) (serverAddress string) { host, grpcPort, parseErr := hostAndPort(grpcAddress) if parseErr != nil { glog.Errorf("server grpc address %s parse error: %v", grpcAddress, parseErr) - return grpcAddress + return "" } port := int(grpcPort) - 10000