Skip to content

Commit b47046f

Browse files
authored
Move ServiceName to primitives and use everywhere (#3695)
1 parent b1943f7 commit b47046f

31 files changed

+152
-129
lines changed

common/log/tag/tags.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
enumspb "go.temporal.io/api/enums/v1"
3333

3434
enumsspb "go.temporal.io/server/api/enums/v1"
35+
"go.temporal.io/server/common/primitives"
3536
"go.temporal.io/server/common/primitives/timestamp"
3637
)
3738

@@ -372,8 +373,8 @@ func shardupdate(shardupdate string) ZapTag {
372373
// general
373374

374375
// Service returns tag for Service
375-
func Service(sv string) ZapTag {
376-
return NewStringTag("service", sv)
376+
func Service(sv primitives.ServiceName) ZapTag {
377+
return NewStringTag("service", string(sv))
377378
}
378379

379380
// Addresses returns tag for Addresses

common/membership/grpc_resolver.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import (
3232

3333
"go.uber.org/fx"
3434
"google.golang.org/grpc/resolver"
35+
36+
"go.temporal.io/server/common/primitives"
3537
)
3638

3739
const GRPCResolverScheme = "membership"
@@ -59,8 +61,8 @@ func initializeBuilder(monitor Monitor) GRPCResolver {
5961
return GRPCResolver{}
6062
}
6163

62-
func (g *GRPCResolver) MakeURL(service string) string {
63-
return fmt.Sprintf("%s://%s", GRPCResolverScheme, service)
64+
func (g *GRPCResolver) MakeURL(service primitives.ServiceName) string {
65+
return fmt.Sprintf("%s://%s", GRPCResolverScheme, string(service))
6466
}
6567

6668
type grpcBuilder struct {
@@ -78,7 +80,7 @@ func (m *grpcBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts
7880
}
7981
// See MakeURL: the service ends up as the "host" of the parsed URL
8082
service := target.URL.Host
81-
r, err := monitor.GetResolver(service)
83+
r, err := monitor.GetResolver(primitives.ServiceName(service))
8284
if err != nil {
8385
return nil, err
8486
}

common/membership/interfaces.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"go.temporal.io/api/serviceerror"
3333

3434
"go.temporal.io/server/common"
35+
"go.temporal.io/server/common/primitives"
3536
)
3637

3738
// ErrUnknownService is thrown for a service that is not tracked by this instance
@@ -65,22 +66,22 @@ type (
6566
// called, other members will discover that this node is no longer part of the
6667
// ring. This primitive is useful to carry out graceful host shutdown during deployments.
6768
EvictSelf() error
68-
Lookup(service string, key string) (*HostInfo, error)
69-
GetResolver(service string) (ServiceResolver, error)
69+
Lookup(service primitives.ServiceName, key string) (*HostInfo, error)
70+
GetResolver(service primitives.ServiceName) (ServiceResolver, error)
7071
// AddListener adds a listener for this service.
7172
// The listener will get notified on the given
7273
// channel, whenever there is a membership change.
7374
// @service: The service to be listened on
7475
// @name: The name for identifying the listener
7576
// @notifyChannel: The channel on which the caller receives notifications
76-
AddListener(service string, name string, notifyChannel chan<- *ChangedEvent) error
77+
AddListener(service primitives.ServiceName, name string, notifyChannel chan<- *ChangedEvent) error
7778
// RemoveListener removes a listener for this service.
78-
RemoveListener(service string, name string) error
79+
RemoveListener(service primitives.ServiceName, name string) error
7980
// GetReachableMembers returns addresses of all members of the ring
8081
GetReachableMembers() ([]string, error)
8182
// GetMemberCount returns the number of reachable members
82-
// currently in this node's membership list for the given role
83-
GetMemberCount(role string) (int, error)
83+
// currently in this node's membership list for the given service
84+
GetMemberCount(service primitives.ServiceName) (int, error)
8485
}
8586

8687
// ServiceResolver provides membership information for a specific temporal service.

common/membership/interfaces_mock.go

+9-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

common/membership/rpMonitor.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ type ringpopMonitor struct {
6161
lifecycleCtx context.Context
6262
lifecycleCancel context.CancelFunc
6363

64-
serviceName string
65-
services map[string]int
64+
serviceName primitives.ServiceName
65+
services map[primitives.ServiceName]int
6666
rp *RingPop
67-
rings map[string]*ringpopServiceResolver
67+
rings map[primitives.ServiceName]*ringpopServiceResolver
6868
logger log.Logger
6969
metadataManager persistence.ClusterMetadataManager
7070
broadcastHostPortResolver func() (string, error)
@@ -75,8 +75,8 @@ var _ Monitor = (*ringpopMonitor)(nil)
7575

7676
// NewRingpopMonitor returns a ringpop-based membership monitor
7777
func NewRingpopMonitor(
78-
serviceName string,
79-
services map[string]int,
78+
serviceName primitives.ServiceName,
79+
services map[primitives.ServiceName]int,
8080
rp *RingPop,
8181
logger log.Logger,
8282
metadataManager persistence.ClusterMetadataManager,
@@ -98,7 +98,7 @@ func NewRingpopMonitor(
9898
serviceName: serviceName,
9999
services: services,
100100
rp: rp,
101-
rings: make(map[string]*ringpopServiceResolver),
101+
rings: make(map[primitives.ServiceName]*ringpopServiceResolver),
102102
logger: logger,
103103
metadataManager: metadataManager,
104104
broadcastHostPortResolver: broadcastHostPortResolver,
@@ -145,7 +145,7 @@ func (rpo *ringpopMonitor) Start() {
145145
rpo.logger.Fatal("unable to set ring pop ServicePort label", tag.Error(err))
146146
}
147147

148-
if err = labels.Set(RoleKey, rpo.serviceName); err != nil {
148+
if err = labels.Set(RoleKey, string(rpo.serviceName)); err != nil {
149149
rpo.logger.Fatal("unable to set ring pop ServiceRole label", tag.Error(err))
150150
}
151151

@@ -154,7 +154,7 @@ func (rpo *ringpopMonitor) Start() {
154154
}
155155
}
156156

157-
func ServiceNameToServiceTypeEnum(name string) (persistence.ServiceType, error) {
157+
func ServiceNameToServiceTypeEnum(name primitives.ServiceName) (persistence.ServiceType, error) {
158158
switch name {
159159
case primitives.AllServices:
160160
return persistence.All, nil
@@ -355,31 +355,31 @@ func (rpo *ringpopMonitor) EvictSelf() error {
355355
return rpo.rp.SelfEvict()
356356
}
357357

358-
func (rpo *ringpopMonitor) GetResolver(service string) (ServiceResolver, error) {
358+
func (rpo *ringpopMonitor) GetResolver(service primitives.ServiceName) (ServiceResolver, error) {
359359
ring, found := rpo.rings[service]
360360
if !found {
361361
return nil, ErrUnknownService
362362
}
363363
return ring, nil
364364
}
365365

366-
func (rpo *ringpopMonitor) Lookup(service string, key string) (*HostInfo, error) {
366+
func (rpo *ringpopMonitor) Lookup(service primitives.ServiceName, key string) (*HostInfo, error) {
367367
ring, err := rpo.GetResolver(service)
368368
if err != nil {
369369
return nil, err
370370
}
371371
return ring.Lookup(key)
372372
}
373373

374-
func (rpo *ringpopMonitor) AddListener(service string, name string, notifyChannel chan<- *ChangedEvent) error {
374+
func (rpo *ringpopMonitor) AddListener(service primitives.ServiceName, name string, notifyChannel chan<- *ChangedEvent) error {
375375
ring, err := rpo.GetResolver(service)
376376
if err != nil {
377377
return err
378378
}
379379
return ring.AddListener(name, notifyChannel)
380380
}
381381

382-
func (rpo *ringpopMonitor) RemoveListener(service string, name string) error {
382+
func (rpo *ringpopMonitor) RemoveListener(service primitives.ServiceName, name string) error {
383383
ring, err := rpo.GetResolver(service)
384384
if err != nil {
385385
return err
@@ -391,7 +391,7 @@ func (rpo *ringpopMonitor) GetReachableMembers() ([]string, error) {
391391
return rpo.rp.GetReachableMembers()
392392
}
393393

394-
func (rpo *ringpopMonitor) GetMemberCount(service string) (int, error) {
394+
func (rpo *ringpopMonitor) GetMemberCount(service primitives.ServiceName) (int, error) {
395395
ring, err := rpo.GetResolver(service)
396396
if err != nil {
397397
return 0, err

common/membership/rpServiceResolver.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"go.temporal.io/server/common"
4444
"go.temporal.io/server/common/log"
4545
"go.temporal.io/server/common/log/tag"
46+
"go.temporal.io/server/common/primitives"
4647
)
4748

4849
const (
@@ -62,7 +63,7 @@ const (
6263

6364
type ringpopServiceResolver struct {
6465
status int32
65-
service string
66+
service primitives.ServiceName
6667
port int
6768
rp *RingPop
6869
refreshChan chan struct{}
@@ -83,7 +84,7 @@ type ringpopServiceResolver struct {
8384
var _ ServiceResolver = (*ringpopServiceResolver)(nil)
8485

8586
func newRingpopServiceResolver(
86-
service string,
87+
service primitives.ServiceName,
8788
port int,
8889
rp *RingPop,
8990
logger log.Logger,
@@ -286,7 +287,7 @@ func (r *ringpopServiceResolver) refreshNoLock() (*ChangedEvent, error) {
286287
}
287288

288289
func (r *ringpopServiceResolver) getReachableMembers() ([]string, error) {
289-
members, err := r.rp.GetReachableMemberObjects(swim.MemberWithLabelAndValue(RoleKey, r.service))
290+
members, err := r.rp.GetReachableMemberObjects(swim.MemberWithLabelAndValue(RoleKey, string(r.service)))
290291
if err != nil {
291292
return nil, err
292293
}
@@ -361,7 +362,7 @@ func (r *ringpopServiceResolver) ring() *hashring.HashRing {
361362

362363
func (r *ringpopServiceResolver) getLabelsMap() map[string]string {
363364
labels := make(map[string]string)
364-
labels[RoleKey] = r.service
365+
labels[RoleKey] = string(r.service)
365366
return labels
366367
}
367368

common/membership/rp_cluster_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"go.temporal.io/server/common/log"
3838
"go.temporal.io/server/common/log/tag"
3939
"go.temporal.io/server/common/persistence"
40+
"go.temporal.io/server/common/primitives"
4041
)
4142

4243
// TestRingpopCluster is a type that represents a test ringpop cluster
@@ -58,7 +59,7 @@ func NewTestRingpopCluster(
5859
size int,
5960
listenIPAddr string,
6061
seed string,
61-
serviceName string,
62+
serviceName primitives.ServiceName,
6263
broadcastAddress string,
6364
) *TestRingpopCluster {
6465
logger := log.NewTestLogger()
@@ -156,7 +157,7 @@ func NewTestRingpopCluster(
156157
_, port, _ := SplitHostPortTyped(cluster.hostAddrs[i])
157158
cluster.rings[i] = NewRingpopMonitor(
158159
serviceName,
159-
map[string]int{serviceName: int(port)}, // use same port for "grpc" port
160+
map[primitives.ServiceName]int{serviceName: int(port)}, // use same port for "grpc" port
160161
rpWrapper,
161162
logger,
162163
mockMgr,

common/metrics/common.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import (
3333
)
3434

3535
// GetMetricsServiceIdx returns service id corresponding to serviceName
36-
func GetMetricsServiceIdx(serviceName string, logger log.Logger) ServiceIdx {
36+
func GetMetricsServiceIdx(serviceName primitives.ServiceName, logger log.Logger) ServiceIdx {
3737
switch serviceName {
3838
case primitives.FrontendService:
3939
return Frontend
@@ -54,7 +54,7 @@ func GetMetricsServiceIdx(serviceName string, logger log.Logger) ServiceIdx {
5454
}
5555

5656
// GetMetricsServiceIdx returns service id corresponding to serviceName
57-
func MetricsServiceIdxToServiceName(serviceIdx ServiceIdx) (string, error) {
57+
func MetricsServiceIdxToServiceName(serviceIdx ServiceIdx) (primitives.ServiceName, error) {
5858
switch serviceIdx {
5959
case Server:
6060
return primitives.ServerService, nil

common/metrics/tags.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ import (
3030
"strings"
3131

3232
enumspb "go.temporal.io/api/enums/v1"
33+
34+
"go.temporal.io/server/common/primitives"
3335
)
3436

3537
const (
@@ -245,8 +247,8 @@ func ResourceExhaustedCauseTag(cause enumspb.ResourceExhaustedCause) Tag {
245247
return &tagImpl{key: resourceExhaustedTag, value: cause.String()}
246248
}
247249

248-
func ServiceNameTag(value string) Tag {
249-
return &tagImpl{key: serviceName, value: value}
250+
func ServiceNameTag(value primitives.ServiceName) Tag {
251+
return &tagImpl{key: serviceName, value: string(value)}
250252
}
251253

252254
func ActionType(value string) Tag {

common/namespace/handler.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ func (d *HandlerImpl) validateHistoryArchivalURI(URIString string) error {
808808
return err
809809
}
810810

811-
archiver, err := d.archiverProvider.GetHistoryArchiver(URI.Scheme(), primitives.FrontendService)
811+
archiver, err := d.archiverProvider.GetHistoryArchiver(URI.Scheme(), string(primitives.FrontendService))
812812
if err != nil {
813813
return err
814814
}
@@ -822,7 +822,7 @@ func (d *HandlerImpl) validateVisibilityArchivalURI(URIString string) error {
822822
return err
823823
}
824824

825-
archiver, err := d.archiverProvider.GetVisibilityArchiver(URI.Scheme(), primitives.FrontendService)
825+
archiver, err := d.archiverProvider.GetVisibilityArchiver(URI.Scheme(), string(primitives.FrontendService))
826826
if err != nil {
827827
return err
828828
}

common/primitives/role.go

+10-8
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424

2525
package primitives
2626

27-
// These const represent role strings
27+
type ServiceName string
28+
29+
// These constants represent service roles
2830
const (
29-
AllServices = "all"
30-
FrontendService = "frontend"
31-
HistoryService = "history"
32-
MatchingService = "matching"
33-
WorkerService = "worker"
34-
ServerService = "server"
35-
UnitTestService = "unittest"
31+
AllServices ServiceName = "all"
32+
FrontendService ServiceName = "frontend"
33+
HistoryService ServiceName = "history"
34+
MatchingService ServiceName = "matching"
35+
WorkerService ServiceName = "worker"
36+
ServerService ServiceName = "server"
37+
UnitTestService ServiceName = "unittest"
3638
)

0 commit comments

Comments
 (0)