Skip to content

Commit f75d267

Browse files
authored
Fix GrpcWrapperAsyncIO.close for OpenTelemetry intercepted streams (#684)
When OpenTelemetry intercepts grpc stream calls it returns generator. So in `GrpcWrapperAsyncIO.close` in case of intercepted call `self._stream_call` have no method `cancel` but have method `close`.
1 parent 13e48ea commit f75d267

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

ydb/_grpc/grpcwrapper/common_utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,12 @@ async def start(self, driver: SupportedDriverType, stub: Any, method: str) -> No
198198
def close(self) -> None:
199199
self.from_client_grpc.put_nowait(_stop_grpc_connection_marker)
200200
if self._stream_call:
201-
self._stream_call.cancel()
201+
if hasattr(self._stream_call, "cancel"):
202+
# for ordinal grpc calls
203+
self._stream_call.cancel()
204+
elif hasattr(self._stream_call, "close"):
205+
# for OpenTelemetry intercepted grpc calls (generator)
206+
self._stream_call.close()
202207

203208
self._clean_executor(wait=True)
204209

0 commit comments

Comments
 (0)