55import nanoid # type: ignore
66from aiochannel import Channel
77from aiochannel .errors import ChannelClosed
8+ from opentelemetry .trace import Span
89
910from replit_river .error_schema import (
1011 ERROR_CODE_STREAM_CLOSED ,
@@ -37,6 +38,7 @@ async def send_rpc(
3738 request_serializer : Callable [[RequestType ], Any ],
3839 response_deserializer : Callable [[Any ], ResponseType ],
3940 error_deserializer : Callable [[Any ], ErrorType ],
41+ span : Span ,
4042 ) -> ResponseType :
4143 """Sends a single RPC request to the server.
4244
@@ -51,6 +53,7 @@ async def send_rpc(
5153 payload = request_serializer (request ),
5254 service_name = service_name ,
5355 procedure_name = procedure_name ,
56+ span = span ,
5457 )
5558 # Handle potential errors during communication
5659 try :
@@ -89,6 +92,7 @@ async def send_upload(
8992 request_serializer : Callable [[RequestType ], Any ],
9093 response_deserializer : Callable [[Any ], ResponseType ],
9194 error_deserializer : Callable [[Any ], ErrorType ],
95+ span : Span ,
9296 ) -> ResponseType :
9397 """Sends an upload request to the server.
9498
@@ -107,6 +111,7 @@ async def send_upload(
107111 service_name = service_name ,
108112 procedure_name = procedure_name ,
109113 payload = init_serializer (init ),
114+ span = span ,
110115 )
111116 first_message = False
112117 # If this request is not closed and the session is killed, we should
@@ -122,6 +127,7 @@ async def send_upload(
122127 procedure_name = procedure_name ,
123128 control_flags = control_flags ,
124129 payload = request_serializer (item ),
130+ span = span ,
125131 )
126132 except Exception as e :
127133 raise RiverServiceException (
@@ -171,6 +177,7 @@ async def send_subscription(
171177 request_serializer : Callable [[RequestType ], Any ],
172178 response_deserializer : Callable [[Any ], ResponseType ],
173179 error_deserializer : Callable [[Any ], ErrorType ],
180+ span : Span ,
174181 ) -> AsyncIterator [Union [ResponseType , ErrorType ]]:
175182 """Sends a subscription request to the server.
176183
@@ -185,6 +192,7 @@ async def send_subscription(
185192 stream_id = stream_id ,
186193 control_flags = STREAM_OPEN_BIT ,
187194 payload = request_serializer (request ),
195+ span = span ,
188196 )
189197
190198 # Handle potential errors during communication
@@ -221,6 +229,7 @@ async def send_stream(
221229 request_serializer : Callable [[RequestType ], Any ],
222230 response_deserializer : Callable [[Any ], ResponseType ],
223231 error_deserializer : Callable [[Any ], ErrorType ],
232+ span : Span ,
224233 ) -> AsyncIterator [Union [ResponseType , ErrorType ]]:
225234 """Sends a subscription request to the server.
226235
@@ -239,6 +248,7 @@ async def send_stream(
239248 stream_id = stream_id ,
240249 control_flags = STREAM_OPEN_BIT ,
241250 payload = init_serializer (init ),
251+ span = span ,
242252 )
243253 else :
244254 # Get the very first message to open the stream
@@ -250,6 +260,7 @@ async def send_stream(
250260 stream_id = stream_id ,
251261 control_flags = STREAM_OPEN_BIT ,
252262 payload = request_serializer (first ),
263+ span = span ,
253264 )
254265
255266 except StopAsyncIteration :
0 commit comments