From 5e5cfb550ce0cef2da64ae5a9b16c5bf723f200e Mon Sep 17 00:00:00 2001 From: toby cabot Date: Fri, 9 Sep 2022 14:22:23 -0400 Subject: [PATCH] Don't trace gRPC "Canceled" errors We were getting a *lot* of log chaff at TRACE level during normal operation because gRPC returns a "context canceled" error periodically but it's not really an error for us because we immediately loop around again. This commit uses the gRPC status.Code() method to identify these non-errors. It also uses errors.Is() instead of == to compare error objects. This handles wrapped errors. https://pkg.go.dev/google.golang.org/grpc/status#Code https://github.com/golang/go/wiki/ErrorValueFAQ#how-should-i-change-my-error-handling-code-to-work-with-the-new-features Signed-off-by: Toby Cabot --- pkg/registry/core/trace/ns_registry.go | 7 +++++-- pkg/registry/core/trace/nse_registry.go | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/registry/core/trace/ns_registry.go b/pkg/registry/core/trace/ns_registry.go index 29663de2a..d0a6478cc 100644 --- a/pkg/registry/core/trace/ns_registry.go +++ b/pkg/registry/core/trace/ns_registry.go @@ -19,6 +19,7 @@ package trace import ( "context" + "errors" "io" "github.com/networkservicemesh/sdk/pkg/registry/core/streamcontext" @@ -26,6 +27,8 @@ import ( "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "github.com/networkservicemesh/api/pkg/api/registry" ) @@ -47,10 +50,10 @@ func (t *traceNetworkServiceRegistryFindClient) Recv() (*registry.NetworkService rv, err := s.Recv() if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return nil, err } - if err == context.Canceled { + if status.Code(err) == codes.Canceled { return nil, err } return nil, logError(ctx, err, operation) diff --git a/pkg/registry/core/trace/nse_registry.go b/pkg/registry/core/trace/nse_registry.go index 5f5ab71a9..d06027594 100644 --- a/pkg/registry/core/trace/nse_registry.go +++ b/pkg/registry/core/trace/nse_registry.go @@ -18,6 +18,7 @@ package trace import ( "context" + "errors" "io" "github.com/networkservicemesh/sdk/pkg/registry/core/streamcontext" @@ -25,6 +26,8 @@ import ( "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "github.com/networkservicemesh/api/pkg/api/registry" ) @@ -47,10 +50,10 @@ func (t *traceNetworkServiceEndpointRegistryFindClient) Recv() (*registry.Networ rv, err := s.Recv() if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return nil, err } - if err == context.Canceled { + if status.Code(err) == codes.Canceled { return nil, err } return nil, logError(ctx, err, operation)