Skip to content

Commit 385ff44

Browse files
committed
easwars review 2
1 parent 4c7a204 commit 385ff44

13 files changed

+50
-62
lines changed

Diff for: xds/internal/balancer/cdsbalancer/cdsbalancer.go

+2
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,8 @@ func (b *cdsBalancer) onClusterAmbientError(name string, err error) {
526526
//
527527
// Only executed in the context of a serializer callback.
528528
func (b *cdsBalancer) onClusterResourceChangedError(name string, err error) {
529+
b.logger.Errorf("Cluster resource %q received on-resource-changed error update: %v", name, err)
530+
529531
if b.childLB != nil {
530532
b.childLB.ResolverError(err)
531533
} else {

Diff for: xds/internal/balancer/clusterresolver/resource_resolver_eds.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,7 @@ func (er *edsDiscoveryMechanism) OnResourceChanged(update *xdsresource.ResourceD
8484

8585
if update.Err != nil {
8686
if er.logger.V(2) {
87-
if xdsresource.ErrType(update.Err) == xdsresource.ErrorTypeResourceNotFound {
88-
er.logger.Infof("EDS discovery mechanism for resource %q reported resource-does-not-exist error", er.nameToWatch)
89-
} else {
90-
er.logger.Infof("EDS discovery mechanism for resource %q reported on resource changed error: %v", er.nameToWatch, update.Err)
91-
}
87+
er.logger.Infof("EDS discovery mechanism for resource %q reported on resource changed error: %v", er.nameToWatch, update.Err)
9288
}
9389
// Report an empty update that would result in no priority child being
9490
// created for this discovery mechanism. This would result in the priority

Diff for: xds/internal/resolver/xds_resolver.go

+2-10
Original file line numberDiff line numberDiff line change
@@ -528,11 +528,7 @@ func (r *xdsResolver) onListenerResourceAmbientError(err error) {
528528
// Only executed in the context of a serializer callback.
529529
func (r *xdsResolver) onListenerResourceChangedError(err error) {
530530
if r.logger.V(2) {
531-
if xdsresource.ErrType(err) == xdsresource.ErrorTypeResourceNotFound {
532-
r.logger.Infof("Received resource-not-found-error for Listener resource %q", r.ldsResourceName)
533-
} else {
534-
r.logger.Infof("Received on-resource-changed error for Listener resource %q: %v", r.ldsResourceName, err)
535-
}
531+
r.logger.Infof("Received on-resource-changed error for Listener resource %q: %v", r.ldsResourceName, err)
536532
}
537533

538534
r.listenerUpdateRecvd = false
@@ -573,11 +569,7 @@ func (r *xdsResolver) onRouteConfigResourceAmbientError(name string, err error)
573569
// Only executed in the context of a serializer callback.
574570
func (r *xdsResolver) onRouteConfigResourceChangedError(name string, err error) {
575571
if r.logger.V(2) {
576-
if xdsresource.ErrType(err) == xdsresource.ErrorTypeResourceNotFound {
577-
r.logger.Infof("Received resource-not-found-error for RouteConfiguration resource %q", name)
578-
} else {
579-
r.logger.Infof("Received on-resource-changed error for RouteConfiguration resource %q: %v", name, err)
580-
}
572+
r.logger.Infof("Received on-resource-changed error for RouteConfiguration resource %q: %v", name, err)
581573
}
582574

583575
if r.rdsResourceName != name {

Diff for: xds/internal/server/listener_wrapper.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -424,19 +424,17 @@ func (lw *ldsWatcher) OnResourceChanged(update *xdsresource.ResourceDataOrError,
424424
}
425425
return
426426
}
427-
if lw.logger.V(2) {
428-
if update.Err != nil {
429-
lw.logger.Infof("LDS watch for resource %q received error: %#v", lw.name, update.Err)
430-
} else {
431-
u := update.Data.(*xdsresource.ListenerResourceData)
432-
lw.logger.Infof("LDS watch for resource %q received update: %#v", lw.name, u.Resource)
433-
}
434-
}
435427
if update.Err != nil {
428+
if lw.logger.V(2) {
429+
lw.logger.Infof("LDS watch for resource %q received error: %v", lw.name, update.Err)
430+
}
436431
lw.parent.onLDSResourceChangedError(update.Err)
437432
return
438433
}
439434
u := update.Data.(*xdsresource.ListenerResourceData)
435+
if update.Err != nil {
436+
lw.logger.Infof("LDS watch for resource %q received update: %v", lw.name, u.Resource)
437+
}
440438
lw.parent.handleLDSUpdate(u.Resource)
441439
}
442440

Diff for: xds/internal/server/rds_handler.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,17 @@ func (rw *rdsWatcher) OnResourceChanged(update *xdsresource.ResourceDataOrError,
155155
return
156156
}
157157
rw.mu.Unlock()
158-
if rw.logger.V(2) {
159-
if update.Err != nil {
160-
rw.logger.Infof("RDS watch for resource %q received error: %#v", rw.routeName, update.Err)
161-
} else {
162-
u := update.Data.(*xdsresource.RouteConfigResourceData)
163-
rw.logger.Infof("RDS watch for resource %q received update: %#v", rw.routeName, u.Resource)
164-
}
165-
}
166158
if update.Err != nil {
159+
if rw.logger.V(2) {
160+
rw.logger.Infof("RDS watch for resource %q received error: %v", rw.routeName, update.Err)
161+
}
167162
rw.parent.handleRouteUpdate(rw.routeName, rdsWatcherUpdate{err: update.Err})
168163
return
169164
}
170165
u := update.Data.(*xdsresource.RouteConfigResourceData)
166+
if rw.logger.V(2) {
167+
rw.logger.Infof("RDS watch for resource %q received update: %#v", rw.routeName, u.Resource)
168+
}
171169
rw.parent.handleRouteUpdate(rw.routeName, rdsWatcherUpdate{data: &u.Resource})
172170
}
173171

Diff for: xds/internal/testutils/resource_watcher.go

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ func (w *TestResourceWatcher) OnResourceChanged(update xdsresource.ResourceDataO
5454
}
5555
w.ErrorCh <- update.Err
5656
return
57-
5857
}
5958
select {
6059
case <-w.UpdateCh:

Diff for: xds/internal/xdsclient/authority.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ func (a *authority) handleADSResourceUpdate(serverConfig *bootstrap.ServerConfig
466466
watcher := watcher
467467
watcherCnt.Add(1)
468468
funcsToSchedule = append(funcsToSchedule, func(context.Context) {
469-
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource has been removed")}, done)
469+
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q has been removed", name, rType.TypeName())}, done)
470470
})
471471
}
472472
}
@@ -510,7 +510,7 @@ func (a *authority) handleADSResourceDoesNotExist(rType xdsresource.Type, resour
510510
for watcher := range state.watchers {
511511
watcher := watcher
512512
a.watcherCallbackSerializer.TrySchedule(func(context.Context) {
513-
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %s does not exist", rType.TypeName())}, func() {})
513+
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q does not exist", resourceName, rType.TypeName())}, func() {})
514514
})
515515
}
516516
}
@@ -667,7 +667,7 @@ func (a *authority) watchResource(rType xdsresource.Type, resourceName string, w
667667
// server does not have this resource, notify the new watcher.
668668
if state.md.Status == xdsresource.ServiceStatusNotExist {
669669
a.watcherCallbackSerializer.TrySchedule(func(context.Context) {
670-
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %s does not exist", rType.TypeName())}, func() {})
670+
watcher.OnResourceChanged(xdsresource.ResourceDataOrError{Err: xdsresource.NewErrorf(xdsresource.ErrorTypeResourceNotFound, "xds: resource %q of type %q does not exist", resourceName, rType.TypeName())}, func() {})
671671
})
672672
}
673673
cleanup = a.unwatchResource(rType, resourceName, watcher)

Diff for: xds/internal/xdsclient/tests/resource_update_test.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func (s) TestHandleListenerResponseFromManagementServer(t *testing.T) {
161161
Value: []byte{1, 2, 3, 4},
162162
}},
163163
},
164-
wantErr: "xds: resource ListenerResource does not exist",
164+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ListenerResource\" does not exist", resourceName1),
165165
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
166166
{
167167
TypeUrl: "type.googleapis.com/envoy.config.listener.v3.Listener",
@@ -177,7 +177,7 @@ func (s) TestHandleListenerResponseFromManagementServer(t *testing.T) {
177177
TypeUrl: "type.googleapis.com/envoy.config.listener.v3.Listener",
178178
VersionInfo: "1",
179179
},
180-
wantErr: "xds: resource ListenerResource does not exist",
180+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ListenerResource\" does not exist", resourceName1),
181181
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
182182
{
183183
TypeUrl: "type.googleapis.com/envoy.config.listener.v3.Listener",
@@ -194,7 +194,7 @@ func (s) TestHandleListenerResponseFromManagementServer(t *testing.T) {
194194
VersionInfo: "1",
195195
Resources: []*anypb.Any{testutils.MarshalAny(t, &v3routepb.RouteConfiguration{})},
196196
},
197-
wantErr: "xds: resource ListenerResource does not exist",
197+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ListenerResource\" does not exist", resourceName1),
198198
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
199199
{
200200
TypeUrl: "type.googleapis.com/envoy.config.listener.v3.Listener",
@@ -418,7 +418,7 @@ func (s) TestHandleRouteConfigResponseFromManagementServer(t *testing.T) {
418418
Value: []byte{1, 2, 3, 4},
419419
}},
420420
},
421-
wantErr: "xds: resource RouteConfigResource does not exist",
421+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"RouteConfigResource\" does not exist", resourceName1),
422422
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
423423
{
424424
TypeUrl: "type.googleapis.com/envoy.config.route.v3.RouteConfiguration",
@@ -434,7 +434,7 @@ func (s) TestHandleRouteConfigResponseFromManagementServer(t *testing.T) {
434434
TypeUrl: "type.googleapis.com/envoy.config.route.v3.RouteConfiguration",
435435
VersionInfo: "1",
436436
},
437-
wantErr: "xds: resource RouteConfigResource does not exist",
437+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"RouteConfigResource\" does not exist", resourceName1),
438438
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
439439
{
440440
TypeUrl: "type.googleapis.com/envoy.config.route.v3.RouteConfiguration",
@@ -451,7 +451,7 @@ func (s) TestHandleRouteConfigResponseFromManagementServer(t *testing.T) {
451451
VersionInfo: "1",
452452
Resources: []*anypb.Any{testutils.MarshalAny(t, &v3clusterpb.Cluster{})},
453453
},
454-
wantErr: "xds: resource RouteConfigResource does not exist",
454+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"RouteConfigResource\" does not exist", resourceName1),
455455
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
456456
{
457457
TypeUrl: "type.googleapis.com/envoy.config.route.v3.RouteConfiguration",
@@ -667,7 +667,7 @@ func (s) TestHandleClusterResponseFromManagementServer(t *testing.T) {
667667
Value: []byte{1, 2, 3, 4},
668668
}},
669669
},
670-
wantErr: "xds: resource ClusterResource does not exist",
670+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ClusterResource\" does not exist", resourceName1),
671671
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
672672
{
673673
TypeUrl: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
@@ -683,7 +683,7 @@ func (s) TestHandleClusterResponseFromManagementServer(t *testing.T) {
683683
TypeUrl: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
684684
VersionInfo: "1",
685685
},
686-
wantErr: "xds: resource ClusterResource does not exist",
686+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ClusterResource\" does not exist", resourceName1),
687687
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
688688
{
689689
TypeUrl: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
@@ -700,7 +700,7 @@ func (s) TestHandleClusterResponseFromManagementServer(t *testing.T) {
700700
VersionInfo: "1",
701701
Resources: []*anypb.Any{testutils.MarshalAny(t, &v3endpointpb.ClusterLoadAssignment{})},
702702
},
703-
wantErr: "xds: resource ClusterResource does not exist",
703+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"ClusterResource\" does not exist", resourceName1),
704704
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
705705
{
706706
TypeUrl: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
@@ -974,7 +974,7 @@ func (s) TestHandleEndpointsResponseFromManagementServer(t *testing.T) {
974974
Value: []byte{1, 2, 3, 4},
975975
}},
976976
},
977-
wantErr: "xds: resource EndpointsResource does not exist",
977+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"EndpointsResource\" does not exist", resourceName1),
978978
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
979979
{
980980
TypeUrl: "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment",
@@ -990,7 +990,7 @@ func (s) TestHandleEndpointsResponseFromManagementServer(t *testing.T) {
990990
TypeUrl: "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment",
991991
VersionInfo: "1",
992992
},
993-
wantErr: "xds: resource EndpointsResource does not exist",
993+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"EndpointsResource\" does not exist", resourceName1),
994994
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
995995
{
996996
TypeUrl: "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment",
@@ -1007,7 +1007,7 @@ func (s) TestHandleEndpointsResponseFromManagementServer(t *testing.T) {
10071007
VersionInfo: "1",
10081008
Resources: []*anypb.Any{testutils.MarshalAny(t, &v3listenerpb.Listener{})},
10091009
},
1010-
wantErr: "xds: resource EndpointsResource does not exist",
1010+
wantErr: fmt.Sprintf("xds: resource \"%v\" of type \"EndpointsResource\" does not exist", resourceName1),
10111011
wantGenericXDSConfig: []*v3statuspb.ClientConfig_GenericXdsConfig{
10121012
{
10131013
TypeUrl: "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment",

Diff for: xds/internal/xdsclient/xdsresource/cluster_resource_type.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ type ClusterWatcher interface {
123123
// - connection failure (if resource is not cached)
124124
OnResourceChanged(*ResourceDataOrError, OnDoneFunc)
125125

126-
// If resource is already cached, it is invoked under different error
127-
// conditions including but not limited to the following:
126+
// OnAmbientError is invoked if resource is already cached under different
127+
// error conditions including but not limited to the following:
128128
// - resource validation error
129129
// - ADS stream failure
130130
// - connection failure

Diff for: xds/internal/xdsclient/xdsresource/endpoints_resource_type.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ type EndpointsWatcher interface {
119119
// - connection failure (if resource is not cached)
120120
OnResourceChanged(*ResourceDataOrError, OnDoneFunc)
121121

122-
// If resource is already cached, it is invoked under different error
123-
// conditions including but not limited to the following:
122+
// OnAmbientError is invoked if resource is already cached under different
123+
// error conditions including but not limited to the following:
124124
// - resource validation error
125125
// - ADS stream failure
126126
// - connection failure

Diff for: xds/internal/xdsclient/xdsresource/listener_resource_type.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ type ListenerWatcher interface {
156156
// - connection failure (if resource is not cached)
157157
OnResourceChanged(*ResourceDataOrError, OnDoneFunc)
158158

159-
// If resource is already cached, it is invoked under different error
160-
// conditions including but not limited to the following:
159+
// OnAmbientError is invoked if resource is already cached under different
160+
// error conditions including but not limited to the following:
161161
// - resource validation error
162162
// - ADS stream failure
163163
// - connection failure

Diff for: xds/internal/xdsclient/xdsresource/resource_type.go

+10-7
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,18 @@ type ResourceWatcher interface {
7373
// the resource received from the xDS server or an error indicating the
7474
// reason why the resource could not be obtained.
7575
//
76-
// The ResourceData of the ResourceDataOrError needs to be type asserted to
77-
// the appropriate type for the resource being watched. In case of error,
78-
// the ResourceData is nil otherwise its not nil and error is nil but both
79-
// will never be nil together.
76+
// In the former case, this callback will be invoked with a non-nil
77+
// ResourceData in ResourceDataOrError. The ResourceData of the
78+
// ResourceDataOrError needs to be type asserted to the appropriate type
79+
// for the resource being watched.
80+
//
81+
// In the latter case, this callback will be invoked with a non-nil error
82+
// value in ResourceDataOrError.
8083
//
8184
// Watcher is expected to use the most recent value passed to
82-
// OnResourceChanged(), regardless of whether that's a resource or an error
83-
// i.e., if the watcher is given an error via OnResourceChanged(), that
84-
// means it should stop using any previously delivered resource.
85+
// OnResourceChanged(), regardless of whether that's a ResourceData or an
86+
// error i.e., if the watcher is given an error via OnResourceChanged(),
87+
// that means it should stop using any previously delivered resource.
8588
//
8689
// It is invoked under different error conditions including but not
8790
// limited to the following:

Diff for: xds/internal/xdsclient/xdsresource/route_config_resource_type.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ type RouteConfigWatcher interface {
120120
// - connection failure (if resource is not cached)
121121
OnResourceChanged(*ResourceDataOrError, OnDoneFunc)
122122

123-
// If resource is already cached, it is invoked under different error
124-
// conditions including but not limited to the following:
123+
// OnAmbientError is invoked if resource is already cached under different
124+
// error conditions including but not limited to the following:
125125
// - resource validation error
126126
// - ADS stream failure
127127
// - connection failure

0 commit comments

Comments
 (0)