Skip to content

Commit 9bf6c13

Browse files
authored
Make async gRPC less noisy (#2507)
1 parent 0c9803a commit 9bf6c13

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

sentry_sdk/integrations/grpc/aio/server.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
try:
1414
import grpc
1515
from grpc import HandlerCallDetails, RpcMethodHandler
16-
from grpc.aio import ServicerContext
16+
from grpc.aio import AbortError, ServicerContext
1717
except ImportError:
1818
raise DidNotEnable("grpcio is not installed")
1919

@@ -52,6 +52,8 @@ async def wrapped(request, context):
5252
with hub.start_transaction(transaction=transaction):
5353
try:
5454
return await handler.unary_unary(request, context)
55+
except AbortError:
56+
raise
5557
except Exception as exc:
5658
event, hint = event_from_exception(
5759
exc,

tests/integrations/grpc/test_grpc_aio.py

+18
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,21 @@ async def test_grpc_server_exception(capture_events, grpc_server):
124124
assert event["exception"]["values"][0]["mechanism"]["type"] == "grpc"
125125

126126

127+
@pytest.mark.asyncio
128+
async def test_grpc_server_abort(capture_events, grpc_server):
129+
events = capture_events()
130+
131+
async with grpc.aio.insecure_channel("localhost:{}".format(AIO_PORT)) as channel:
132+
stub = gRPCTestServiceStub(channel)
133+
try:
134+
await stub.TestServe(gRPCTestMessage(text="abort"))
135+
raise AssertionError()
136+
except Exception:
137+
pass
138+
139+
assert len(events) == 1
140+
141+
127142
@pytest.mark.asyncio
128143
async def test_grpc_client_starts_span(
129144
grpc_server, sentry_init, capture_events_forksafe
@@ -218,6 +233,9 @@ async def TestServe(cls, request, context): # noqa: N802
218233
if request.text == "exception":
219234
raise cls.TestException()
220235

236+
if request.text == "abort":
237+
await context.abort(grpc.StatusCode.ABORTED)
238+
221239
return gRPCTestMessage(text=request.text)
222240

223241
@classmethod

0 commit comments

Comments
 (0)