@@ -38,16 +38,16 @@ func (o *ServerOptions) setDefaults() {
3838 }
3939}
4040
41- func recoverWithSentry (ctx context.Context , hub * sentry. Hub , o ServerOptions , onRecover func ()) {
41+ func recoverWithSentry (ctx context.Context , o ServerOptions , onRecover func ()) {
4242 if r := recover (); r != nil {
43- eventID := hub . RecoverWithContext (ctx , r )
43+ eventID := sentry . Recover (ctx , r )
4444
4545 if onRecover != nil {
4646 onRecover ()
4747 }
4848
4949 if eventID != nil && o .WaitForDelivery {
50- hub .Flush (o .Timeout )
50+ sentry . ClientFromContext ( ctx ) .Flush (o .Timeout )
5151 }
5252
5353 if o .Repanic {
@@ -56,33 +56,25 @@ func recoverWithSentry(ctx context.Context, hub *sentry.Hub, o ServerOptions, on
5656 }
5757}
5858
59- func hubFromServerContext (ctx context.Context ) * sentry.Hub {
60- hub := sentry .GetHubFromContext (ctx )
61- if hub == nil {
62- hub = sentry .CurrentHub ().Clone ()
63- }
64-
65- if client := hub .Client (); client .IsEnabled () {
66- client .SetSDKIdentifier (sdkIdentifier )
67- }
68-
69- return hub
70- }
71-
7259func traceHeadersFromContext (ctx context.Context ) (metadata.MD , string , string ) {
7360 md , _ := metadata .FromIncomingContext (ctx )
7461 return md , getFirstHeader (md , sentry .SentryTraceHeader ), getFirstHeader (md , sentry .SentryBaggageHeader )
7562}
7663
77- func startServerTransaction (ctx context.Context , fullMethod string ) (context.Context , * sentry.Hub , * sentry.Span ) {
78- hub := hubFromServerContext (ctx )
64+ func startServerTransaction (ctx context.Context , fullMethod string ) (context.Context , * sentry.Span ) {
65+ ctx , scope := sentry .WithIsolationScope (ctx )
66+ client := sentry .ClientFromContext (ctx )
67+ if client .IsEnabled () {
68+ client .SetSDKIdentifier (sdkIdentifier )
69+ }
70+
7971 md , sentryTraceHeader , sentryBaggageHeader := traceHeadersFromContext (ctx )
8072 name , service , method := parseGRPCMethod (fullMethod )
8173
82- setScopeMetadata (hub , name , md )
74+ setScopeMetadata (scope , client , name , md )
8375
8476 transaction := sentry .StartTransaction (
85- sentry . SetHubOnContext ( ctx , hub ) ,
77+ ctx ,
8678 name ,
8779 sentry .ContinueTrace (sentryTraceHeader , sentryBaggageHeader ),
8880 sentry .WithOpName (defaultServerOperationName ),
@@ -98,7 +90,7 @@ func startServerTransaction(ctx context.Context, fullMethod string) (context.Con
9890 }
9991 transaction .SetData ("rpc.system" , "grpc" )
10092
101- return transaction .Context (), hub , transaction
93+ return transaction .Context (), transaction
10294}
10395
10496func setRPCStatus (span * sentry.Span , err error ) {
@@ -123,10 +115,10 @@ func UnaryServerInterceptor(opts ServerOptions) grpc.UnaryServerInterceptor {
123115 opts .setDefaults ()
124116
125117 return func (ctx context.Context , req any , info * grpc.UnaryServerInfo , handler grpc.UnaryHandler ) (resp any , err error ) {
126- ctx , hub , transaction := startServerTransaction (ctx , info .FullMethod )
118+ ctx , transaction := startServerTransaction (ctx , info .FullMethod )
127119 defer transaction .Finish ()
128120
129- defer recoverWithSentry (ctx , hub , opts , func () {
121+ defer recoverWithSentry (ctx , opts , func () {
130122 err = status .Error (codes .Internal , internalServerErrorMessage )
131123 setRPCStatus (transaction , err )
132124 })
@@ -142,12 +134,12 @@ func UnaryServerInterceptor(opts ServerOptions) grpc.UnaryServerInterceptor {
142134func StreamServerInterceptor (opts ServerOptions ) grpc.StreamServerInterceptor {
143135 opts .setDefaults ()
144136 return func (srv any , ss grpc.ServerStream , info * grpc.StreamServerInfo , handler grpc.StreamHandler ) (err error ) {
145- ctx , hub , transaction := startServerTransaction (ss .Context (), info .FullMethod )
137+ ctx , transaction := startServerTransaction (ss .Context (), info .FullMethod )
146138 defer transaction .Finish ()
147139
148140 stream := wrapServerStream (ctx , ss )
149141
150- defer recoverWithSentry (ctx , hub , opts , func () {
142+ defer recoverWithSentry (ctx , opts , func () {
151143 err = status .Error (codes .Internal , internalServerErrorMessage )
152144 setRPCStatus (transaction , err )
153145 })
@@ -166,12 +158,10 @@ func getFirstHeader(md metadata.MD, key string) string {
166158 return ""
167159}
168160
169- func setScopeMetadata (hub * sentry.Hub , method string , md metadata.MD ) {
170- hub .ConfigureScope (func (scope * sentry.Scope ) {
171- scope .SetContext ("grpc" , sentry.Context {
172- "method" : method ,
173- "metadata" : metadataToContext (hub .Client (), md ),
174- })
161+ func setScopeMetadata (scope * sentry.Scope , client * sentry.Client , method string , md metadata.MD ) {
162+ scope .SetContext ("grpc" , sentry.Context {
163+ "method" : method ,
164+ "metadata" : metadataToContext (client , md ),
175165 })
176166}
177167
0 commit comments