diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2018-04-05 17:00:08 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2018-04-06 11:57:38 +0300 |
commit | 4428d625066cbd897bd1a5a13360d425f55127d1 (patch) | |
tree | 3bd91762d665dad5303f818970da68aaf1b23351 /internal/middleware | |
parent | 644a6a4f4de823371d67b5463ab3bcc750adfd6e (diff) |
Ignore more grpc codes in sentry
Diffstat (limited to 'internal/middleware')
-rw-r--r-- | internal/middleware/sentryhandler/sentryhandler.go | 19 | ||||
-rw-r--r-- | internal/middleware/sentryhandler/sentryhandler_test.go | 21 |
2 files changed, 38 insertions, 2 deletions
diff --git a/internal/middleware/sentryhandler/sentryhandler.go b/internal/middleware/sentryhandler/sentryhandler.go index ee79ea494..4b1690892 100644 --- a/internal/middleware/sentryhandler/sentryhandler.go +++ b/internal/middleware/sentryhandler/sentryhandler.go @@ -15,6 +15,16 @@ import ( "google.golang.org/grpc/codes" ) +var ignoredCodes = []codes.Code{ + // OK means there was no error + codes.OK, + // Canceled and DeadlineExceeded indicate clients that disappeared or lost interest + codes.Canceled, + codes.DeadlineExceeded, + // We use FailedPrecondition to signal error conditions that are 'normal' + codes.FailedPrecondition, +} + // UnaryLogHandler handles access times and errors for unary RPC's func UnaryLogHandler(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { start := time.Now() @@ -56,8 +66,13 @@ func methodToCulprit(methodName string) string { func logErrorToSentry(err error) (code codes.Code, bypass bool) { code = helper.GrpcCode(err) - bypass = code == codes.OK || code == codes.Canceled - return code, bypass + for _, ignoredCode := range ignoredCodes { + if code == ignoredCode { + return code, true + } + } + + return code, false } func generateRavenPacket(ctx context.Context, method string, start time.Time, err error) (*raven.Packet, map[string]string) { diff --git a/internal/middleware/sentryhandler/sentryhandler_test.go b/internal/middleware/sentryhandler/sentryhandler_test.go index b156de474..5408cc836 100644 --- a/internal/middleware/sentryhandler/sentryhandler_test.go +++ b/internal/middleware/sentryhandler/sentryhandler_test.go @@ -48,6 +48,27 @@ func Test_generateRavenPacket(t *testing.T) { err: nil, wantNil: true, }, + { + name: "Canceled", + method: "/gitaly.RepoService/RepoExists", + sinceStart: 500 * time.Millisecond, + err: status.Errorf(codes.Canceled, "Something failed"), + wantNil: true, + }, + { + name: "DeadlineExceeded", + method: "/gitaly.RepoService/RepoExists", + sinceStart: 500 * time.Millisecond, + err: status.Errorf(codes.DeadlineExceeded, "Something failed"), + wantNil: true, + }, + { + name: "FailedPrecondition", + method: "/gitaly.RepoService/RepoExists", + sinceStart: 500 * time.Millisecond, + err: status.Errorf(codes.FailedPrecondition, "Something failed"), + wantNil: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { |