admin_handler.go ×8

Frontier kind: Joint frontier

unlabeled · c_43cc166c02a7

2 tests · 3880 LOC · 192 files · introduces 1 test · 98 LOC · 4 files

Introduces — evidence that enters the hierarchy at this concept

Code
17 ranges98 lines · 4 files
Tests
1 test

Contains — complete concept membership

All code (extent)
627 ranges3880 lines · 192 files · Browse complete extent
All tests (intent)
2 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

1 test introduced at this concept.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

4 files ranked by introduced lines: 98 introduced LOC across 17 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

go.temporal.io/server/service/frontend/admin_handler.go 55 introduced LOC · 8 ranges

Open complete file

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
1037 > membershipInfo.ReachableMembers = members admin_handler.go
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
1055 > var servers []*clusterspb.HostInfo admin_handler.go
1056 > for _, server := range resolver.Members() {
1057 servers = append(servers, &clusterspb.HostInfo{
1058 Identity: server.Identity(),
1060 }
1061
1062 > rings = append(rings, &clusterspb.RingInfo{ admin_handler.go
1063 > Role: string(role),
1064 > MemberCount: int32(resolver.MemberCount()),
1065 > Members: servers,
1066 > })
1067 }
1068 > membershipInfo.Rings = rings admin_handler.go
1069 }
1070
1071 > if len(request.ClusterName) == 0 { admin_handler.go
1072 request.ClusterName = adh.clusterMetadata.GetCurrentClusterName()
1073 }
1074 > metadata, err := adh.clusterMetadataManager.GetClusterMetadata( admin_handler.go
1075 > ctx,
1076 > &persistence.GetClusterMetadataRequest{ClusterName: request.GetClusterName()},
1077 > )
1078 > if err != nil {
1079 return nil, err
1080 }
1081
1082 > return &adminservice.DescribeClusterResponse{ admin_handler.go
1083 > SupportedClients: headers.SupportedClients,
1084 > ServerVersion: headers.ServerVersion,
1085 > MembershipInfo: membershipInfo,
1086 > ClusterId: metadata.GetClusterId(),
1087 > ClusterName: metadata.GetClusterName(),
1088 > HistoryShardCount: metadata.GetHistoryShardCount(),
1089 > PersistenceStore: adh.persistenceExecutionName,
1090 > VisibilityStore: strings.Join(adh.visibilityMgr.GetStoreNames(), ","),
1091 > VersionInfo: metadata.GetVersionInfo(),
1092 > FailoverVersionIncrement: metadata.GetFailoverVersionIncrement(),
1093 > InitialFailoverVersion: metadata.GetInitialFailoverVersion(),
1094 > IsGlobalNamespaceEnabled: metadata.GetIsGlobalNamespaceEnabled(),
1095 > Tags: metadata.GetTags(),
1096 > HttpAddress: metadata.GetHttpAddress(),
1097 > }, nil
1098 }
1099
go.temporal.io/server/common/membership/interfaces_mock.go 27 introduced LOC · 5 ranges

Open complete file

87
88 // GetReachableMembers mocks base method.
89 > func (m *MockMonitor) GetReachableMembers() ([]string, error) { interfaces_mock.go
90 > m.ctrl.T.Helper()
91 > ret := m.ctrl.Call(m, "GetReachableMembers")
92 > ret0, _ := ret[0].([]string)
93 > ret1, _ := ret[1].(error)
94 > return ret0, ret1
95 > }
96
97 // GetReachableMembers indicates an expected call of GetReachableMembers.
98 > func (mr *MockMonitorMockRecorder) GetReachableMembers() *gomock.Call { interfaces_mock.go
99 > mr.mock.ctrl.T.Helper()
100 > return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetReachableMembers", reflect.TypeOf((*MockMonitor)(nil).GetReachableMembers))
101 > }
102
103 // GetResolver mocks base method.
252
253 // MemberCount mocks base method.
254 > func (m *MockServiceResolver) MemberCount() int { interfaces_mock.go
255 > m.ctrl.T.Helper()
256 > ret := m.ctrl.Call(m, "MemberCount")
257 > ret0, _ := ret[0].(int)
258 > return ret0
259 > }
260
261 // MemberCount indicates an expected call of MemberCount.
262 > func (mr *MockServiceResolverMockRecorder) MemberCount() *gomock.Call { interfaces_mock.go
263 > mr.mock.ctrl.T.Helper()
264 > return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MemberCount", reflect.TypeOf((*MockServiceResolver)(nil).MemberCount))
265 > }
266
267 // Members mocks base method.
268 > func (m *MockServiceResolver) Members() []HostInfo { interfaces_mock.go
269 > m.ctrl.T.Helper()
270 > ret := m.ctrl.Call(m, "Members")
271 > ret0, _ := ret[0].([]HostInfo)
272 > return ret0
273 > }
274
275 // Members indicates an expected call of Members.
go.temporal.io/server/api/persistence/v1/cluster_metadata.pb.go 12 introduced LOC · 3 ranges

Open complete file

98 }
99
100 > func (x *ClusterMetadata) GetVersionInfo() *v1.VersionInfo { cluster_metadata.pb.go
101 > if x != nil {
102 > return x.VersionInfo
103 > }
104 return nil
105 }
126 }
127
128 > func (x *ClusterMetadata) GetFailoverVersionIncrement() int64 { cluster_metadata.pb.go
129 > if x != nil {
130 > return x.FailoverVersionIncrement
131 > }
132 return 0
133 }
140 }
141
142 > func (x *ClusterMetadata) GetIsGlobalNamespaceEnabled() bool { cluster_metadata.pb.go
143 > if x != nil {
144 > return x.IsGlobalNamespaceEnabled
145 > }
146 return false
147 }
go.temporal.io/server/api/adminservice/v1/request_response.pb.go 4 introduced LOC · 1 range

Open complete file

2178 }
2179
2180 > func (x *DescribeClusterRequest) GetClusterName() string { request_response.pb.go
2181 > if x != nil {
2182 > return x.ClusterName
2183 > }
2184 return ""
2185 }