1021
ctx context.Context,
1022
request *adminservice.DescribeClusterRequest,
1023
>
) (_ *adminservice.DescribeClusterResponse, retError error) {
admin_handler.go
1024
>
defer log.CapturePanic(adh.logger, &retError)
1025
>
1026
>
membershipInfo := &clusterspb.MembershipInfo{}
1027
>
if monitor := adh.membershipMonitor; monitor != nil {
1028
>
membershipInfo.CurrentHost = &clusterspb.HostInfo{
1029
>
Identity: adh.hostInfoProvider.HostInfo().Identity(),
1030
>
}
1031
>
1032
>
members, err := monitor.GetReachableMembers()
1033
>
if err != nil {
1034
return nil, err
1035
}
1036
1038
>
1039
>
var rings []*clusterspb.RingInfo
1040
>
for _, role := range []primitives.ServiceName{
1041
>
primitives.FrontendService,
1042
>
primitives.InternalFrontendService,
1043
>
primitives.HistoryService,
1044
>
primitives.MatchingService,
1045
>
primitives.WorkerService,
1046
>
} {
1047
>
resolver, err := monitor.GetResolver(role)
1048
>
if err != nil {
1049
>
if role == primitives.InternalFrontendService {
1050
>
continue // this one is optional
1051
}
1052
return nil, err
1053
}
1054
1056
>
for _, server := range resolver.Members() {
1057
servers = append(servers, &clusterspb.HostInfo{
1058
Identity: server.Identity(),