Skip to content

Commit 4907ff9

Browse files
authored
Use empty namespace metrics tag if namespace not found (#3686)
* Use empty namespace metrics tag if namespace not found
1 parent 21ed2aa commit 4907ff9

File tree

3 files changed

+59
-12
lines changed

3 files changed

+59
-12
lines changed

common/rpc/interceptor/caller_info_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ import (
3232
"github.com/stretchr/testify/require"
3333
"github.com/stretchr/testify/suite"
3434
"go.temporal.io/api/workflowservice/v1"
35+
"google.golang.org/grpc"
36+
3537
"go.temporal.io/server/common/headers"
3638
"go.temporal.io/server/common/namespace"
37-
"google.golang.org/grpc"
3839
)
3940

4041
type (
@@ -71,6 +72,7 @@ func (s *callerInfoSuite) TestIntercept_CallerName() {
7172
// testNamespaceID := namespace.NewID()
7273
testNamespaceName := namespace.Name("test-namespace")
7374
// s.mockRegistry.EXPECT().GetNamespaceName(testNamespaceID).Return(testNamespaceName, nil).AnyTimes()
75+
s.mockRegistry.EXPECT().GetNamespace(gomock.Any()).Return(nil, nil).AnyTimes()
7476

7577
testCases := []struct {
7678
setupIncomingCtx func() context.Context
@@ -139,6 +141,8 @@ func (s *callerInfoSuite) TestIntercept_CallerName() {
139141
}
140142

141143
func (s *callerInfoSuite) TestIntercept_CallerType() {
144+
s.mockRegistry.EXPECT().GetNamespace(gomock.Any()).Return(nil, nil).AnyTimes()
145+
142146
testCases := []struct {
143147
setupIncomingCtx func() context.Context
144148
request interface{}
@@ -202,6 +206,7 @@ func (s *callerInfoSuite) TestIntercept_CallOrigin() {
202206
serverInfo := &grpc.UnaryServerInfo{
203207
FullMethod: "/temporal/" + method,
204208
}
209+
s.mockRegistry.EXPECT().GetNamespace(gomock.Any()).Return(nil, nil).AnyTimes()
205210

206211
testCases := []struct {
207212
setupIncomingCtx func() context.Context

common/rpc/interceptor/namespace.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,22 @@ func GetNamespace(
4646
) namespace.Name {
4747
switch request := req.(type) {
4848
case NamespaceNameGetter:
49-
return namespace.Name(request.GetNamespace())
49+
namespaceName := namespace.Name(request.GetNamespace())
50+
_, err := namespaceRegistry.GetNamespace(namespaceName)
51+
if err != nil {
52+
return namespace.EmptyName
53+
}
54+
return namespaceName
5055

5156
case NamespaceIDGetter:
5257
namespaceID := namespace.ID(request.GetNamespaceId())
5358
namespaceName, err := namespaceRegistry.GetNamespaceName(namespaceID)
5459
if err != nil {
55-
return ""
60+
return namespace.EmptyName
5661
}
5762
return namespaceName
5863

5964
default:
60-
return ""
65+
return namespace.EmptyName
6166
}
6267
}

common/rpc/interceptor/namespace_test.go

+45-8
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,23 @@
2525
package interceptor
2626

2727
import (
28+
"errors"
2829
"fmt"
2930
"reflect"
3031
"testing"
3132

33+
"github.com/golang/mock/gomock"
3234
"github.com/stretchr/testify/require"
3335
"github.com/stretchr/testify/suite"
3436
"go.temporal.io/api/workflowservice/v1"
3537

3638
"go.temporal.io/server/api/historyservice/v1"
3739
"go.temporal.io/server/api/matchingservice/v1"
40+
"go.temporal.io/server/common/namespace"
3841
)
3942

4043
type (
41-
nameepaceSuite struct {
44+
namespaceSuite struct {
4245
suite.Suite
4346
*require.Assertions
4447
}
@@ -70,20 +73,20 @@ var (
7073
}
7174
)
7275

73-
func TestNameepaceSuite(t *testing.T) {
74-
s := new(nameepaceSuite)
76+
func TestNamespaceSuite(t *testing.T) {
77+
s := new(namespaceSuite)
7578
suite.Run(t, s)
7679
}
7780

78-
func (s *nameepaceSuite) SetupTest() {
81+
func (s *namespaceSuite) SetupTest() {
7982
s.Assertions = require.New(s.T())
8083
}
8184

82-
func (s *nameepaceSuite) TearDownTest() {
85+
func (s *namespaceSuite) TearDownTest() {
8386

8487
}
8588

86-
func (s *nameepaceSuite) TestFrontendAPIMetrics() {
89+
func (s *namespaceSuite) TestFrontendAPIMetrics() {
8790
namespaceNameGetter := reflect.TypeOf((*NamespaceNameGetter)(nil)).Elem()
8891

8992
var service workflowservice.WorkflowServiceServer
@@ -108,7 +111,7 @@ func (s *nameepaceSuite) TestFrontendAPIMetrics() {
108111
}
109112
}
110113

111-
func (s *nameepaceSuite) TestMatchingAPIMetrics() {
114+
func (s *namespaceSuite) TestMatchingAPIMetrics() {
112115
namespaceIDGetter := reflect.TypeOf((*NamespaceIDGetter)(nil)).Elem()
113116

114117
var service matchingservice.MatchingServiceServer
@@ -133,7 +136,7 @@ func (s *nameepaceSuite) TestMatchingAPIMetrics() {
133136
}
134137
}
135138

136-
func (s *nameepaceSuite) TestHistoryAPIMetrics() {
139+
func (s *namespaceSuite) TestHistoryAPIMetrics() {
137140
namespaceIDGetter := reflect.TypeOf((*NamespaceIDGetter)(nil)).Elem()
138141

139142
var service historyservice.HistoryServiceServer
@@ -157,3 +160,37 @@ func (s *nameepaceSuite) TestHistoryAPIMetrics() {
157160
}
158161
}
159162
}
163+
164+
func (s *namespaceSuite) TestGetNamespace() {
165+
register := namespace.NewMockRegistry(gomock.NewController(s.T()))
166+
register.EXPECT().GetNamespace(namespace.Name("exist")).Return(nil, nil)
167+
register.EXPECT().GetNamespace(namespace.Name("nonexist")).Return(nil, errors.New("not found"))
168+
register.EXPECT().GetNamespaceName(namespace.ID("exist")).Return(namespace.Name("exist"), nil)
169+
register.EXPECT().GetNamespaceName(namespace.ID("nonexist")).Return(namespace.EmptyName, errors.New("not found"))
170+
testCases := []struct {
171+
method interface{}
172+
namespaceName namespace.Name
173+
}{
174+
{
175+
&workflowservice.DescribeNamespaceRequest{Namespace: "exist"},
176+
namespace.Name("exist"),
177+
},
178+
{
179+
&workflowservice.DescribeNamespaceRequest{Namespace: "nonexist"},
180+
namespace.EmptyName,
181+
},
182+
{
183+
&historyservice.DescribeMutableStateRequest{NamespaceId: "exist"},
184+
namespace.Name("exist"),
185+
},
186+
{
187+
&historyservice.DescribeMutableStateRequest{NamespaceId: "nonexist"},
188+
namespace.EmptyName,
189+
},
190+
}
191+
192+
for _, testCase := range testCases {
193+
extractedNamespace := GetNamespace(register, testCase.method)
194+
s.Equal(testCase.namespaceName, extractedNamespace)
195+
}
196+
}

0 commit comments

Comments
 (0)