diff options
author | Zeger-Jan van de Weg <zegerjan@gitlab.com> | 2018-04-06 12:11:18 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <zegerjan@gitlab.com> | 2018-04-06 12:11:18 +0300 |
commit | 18818d2fc5c6e8a2f197883b56774e57d8024a96 (patch) | |
tree | 3bd91762d665dad5303f818970da68aaf1b23351 | |
parent | 644a6a4f4de823371d67b5463ab3bcc750adfd6e (diff) | |
parent | 4428d625066cbd897bd1a5a13360d425f55127d1 (diff) |
Merge branch 'go-sentry-ignore-more-code' into 'master'
Ignore more grpc codes in sentry
Closes #1118
See merge request gitlab-org/gitaly!655
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | internal/middleware/sentryhandler/sentryhandler.go | 19 | ||||
-rw-r--r-- | internal/middleware/sentryhandler/sentryhandler_test.go | 21 |
3 files changed, 40 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index e1d056009..7518f227c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ UNRELEASED https://gitlab.com/gitlab-org/gitaly/merge_requests/656 - Run Go test suite with '-race' in CI https://gitlab.com/gitlab-org/gitaly/merge_requests/654 +- Ignore more grpc codes in sentry + https://gitlab.com/gitlab-org/gitaly/merge_requests/655 - Implement Get{Tag,Commit}Messages RPCs https://gitlab.com/gitlab-org/gitaly/merge_requests/646 - Fix directory permission walker for Go 1.10 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) { |