Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <zegerjan@gitlab.com>2018-04-06 12:11:18 +0300
committerZeger-Jan van de Weg <zegerjan@gitlab.com>2018-04-06 12:11:18 +0300
commit18818d2fc5c6e8a2f197883b56774e57d8024a96 (patch)
tree3bd91762d665dad5303f818970da68aaf1b23351
parent644a6a4f4de823371d67b5463ab3bcc750adfd6e (diff)
parent4428d625066cbd897bd1a5a13360d425f55127d1 (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.md2
-rw-r--r--internal/middleware/sentryhandler/sentryhandler.go19
-rw-r--r--internal/middleware/sentryhandler/sentryhandler_test.go21
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) {