Skip to content

Commit 3b66f2d

Browse files
author
Paul Brittain
committed
Add option to set operation name override.
1 parent 54d2413 commit 3b66f2d

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

client_interceptors.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor {
2424
ctx = sentry.SetHubOnContext(ctx, hub)
2525
}
2626

27-
span := sentry.StartSpan(ctx, "grpc.client")
27+
operationName := defaultClientOperationName
28+
if o.OperationNameOverride != "" {
29+
operationName = o.OperationNameOverride
30+
}
31+
32+
span := sentry.StartSpan(ctx, operationName)
2833
ctx = span.Context()
2934
md, ok := metadata.FromOutgoingContext(ctx)
3035
if ok {
@@ -60,7 +65,12 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor {
6065
ctx = sentry.SetHubOnContext(ctx, hub)
6166
}
6267

63-
span := sentry.StartSpan(ctx, "grpc.client")
68+
operationName := defaultClientOperationName
69+
if o.OperationNameOverride != "" {
70+
operationName = o.OperationNameOverride
71+
}
72+
73+
span := sentry.StartSpan(ctx, operationName)
6474
ctx = span.Context()
6575
md, ok := metadata.FromOutgoingContext(ctx)
6676
if ok {

config.go

+12
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,15 @@ func (r *reportOnOption) Apply(o *options) {
6565
func WithReportOn(r reporter) Option {
6666
return &reportOnOption{ReportOn: r}
6767
}
68+
69+
type operationNameOverride struct {
70+
OperationNameOverride string
71+
}
72+
73+
func (r *operationNameOverride) Apply(o *options) {
74+
o.OperationNameOverride = r.OperationNameOverride
75+
}
76+
77+
func WithOperationNameOverride(s string) Option {
78+
return &operationNameOverride{OperationNameOverride: s}
79+
}

options.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@ import (
77
"google.golang.org/grpc/status"
88
)
99

10+
const (
11+
defaultServerOperationName = "grpc.server"
12+
defaultClientOperationName = "grpc.client"
13+
)
14+
1015
var defaultOptions = &options{
11-
Repanic: false,
12-
WaitForDelivery: false,
13-
ReportOn: ReportAlways,
14-
Timeout: 1 * time.Second,
16+
Repanic: false,
17+
WaitForDelivery: false,
18+
ReportOn: ReportAlways,
19+
Timeout: 1 * time.Second,
20+
OperationNameOverride: "",
1521
}
1622

17-
1823
type options struct {
1924
// Repanic configures whether Sentry should repanic after recovery.
2025
Repanic bool
@@ -26,8 +31,9 @@ type options struct {
2631
Timeout time.Duration
2732

2833
ReportOn func(error) bool
29-
}
3034

35+
OperationNameOverride string
36+
}
3137

3238
func ReportAlways(error) bool {
3339
return true

server_interceptors.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,13 @@ func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor {
4141
ctx = sentry.SetHubOnContext(ctx, hub)
4242
}
4343

44+
operationName := defaultServerOperationName
45+
if o.OperationNameOverride != "" {
46+
operationName = o.OperationNameOverride
47+
}
48+
4449
md, _ := metadata.FromIncomingContext(ctx) // nil check in ContinueFromGrpcMetadata
45-
span := sentry.StartSpan(ctx, "grpc.server", ContinueFromGrpcMetadata(md))
50+
span := sentry.StartSpan(ctx, operationName, ContinueFromGrpcMetadata(md))
4651
ctx = span.Context()
4752
defer span.Finish()
4853

@@ -79,8 +84,13 @@ func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor {
7984
ctx = sentry.SetHubOnContext(ctx, hub)
8085
}
8186

87+
operationName := defaultServerOperationName
88+
if o.OperationNameOverride != "" {
89+
operationName = o.OperationNameOverride
90+
}
91+
8292
md, _ := metadata.FromIncomingContext(ctx) // nil check in ContinueFromGrpcMetadata
83-
span := sentry.StartSpan(ctx, "grpc.server", ContinueFromGrpcMetadata(md))
93+
span := sentry.StartSpan(ctx, operationName, ContinueFromGrpcMetadata(md))
8494
ctx = span.Context()
8595
defer span.Finish()
8696

0 commit comments

Comments
 (0)