@@ -248,14 +248,24 @@ def _telemetry_request_callback(self, future):
248248 except Exception as e :
249249 logger .debug ("Telemetry request failed with exception: %s" , e )
250250
251- def export_initial_telemetry_log (self , driver_connection_params , user_agent ):
252- logger .debug (
253- "Exporting initial telemetry log for connection %s" , self ._session_id_hex
254- )
251+ def _export_telemetry_log (self , ** telemetry_event_kwargs ):
252+ """
253+ Common helper method for exporting telemetry logs.
254+
255+ Args:
256+ **telemetry_event_kwargs: Keyword arguments to pass to TelemetryEvent constructor
257+ """
258+ logger .debug ("Exporting telemetry log for connection %s" , self ._session_id_hex )
255259
256260 try :
257- self ._driver_connection_params = driver_connection_params
258- self ._user_agent = user_agent
261+ # Set common fields for all telemetry events
262+ event_kwargs = {
263+ "session_id" : self ._session_id_hex ,
264+ "system_configuration" : TelemetryHelper .get_driver_system_configuration (),
265+ "driver_connection_params" : self ._driver_connection_params ,
266+ }
267+ # Add any additional fields passed in
268+ event_kwargs .update (telemetry_event_kwargs )
259269
260270 telemetry_frontend_log = TelemetryFrontendLog (
261271 frontend_log_event_id = str (uuid .uuid4 ()),
@@ -265,72 +275,29 @@ def export_initial_telemetry_log(self, driver_connection_params, user_agent):
265275 user_agent = self ._user_agent ,
266276 )
267277 ),
268- entry = FrontendLogEntry (
269- sql_driver_log = TelemetryEvent (
270- session_id = self ._session_id_hex ,
271- system_configuration = TelemetryHelper .get_driver_system_configuration (),
272- driver_connection_params = self ._driver_connection_params ,
273- )
274- ),
278+ entry = FrontendLogEntry (sql_driver_log = TelemetryEvent (** event_kwargs )),
275279 )
276280
277281 self ._export_event (telemetry_frontend_log )
278282
279283 except Exception as e :
280- logger .debug ("Failed to export initial telemetry log: %s" , e )
284+ logger .debug ("Failed to export telemetry log: %s" , e )
285+
286+ def export_initial_telemetry_log (self , driver_connection_params , user_agent ):
287+ self ._driver_connection_params = driver_connection_params
288+ self ._user_agent = user_agent
289+ self ._export_telemetry_log ()
281290
282291 def export_failure_log (self , error_name , error_message ):
283- logger .debug ("Exporting failure log for connection %s" , self ._session_id_hex )
284- try :
285- error_info = DriverErrorInfo (
286- error_name = error_name , stack_trace = error_message
287- )
288- telemetry_frontend_log = TelemetryFrontendLog (
289- frontend_log_event_id = str (uuid .uuid4 ()),
290- context = FrontendLogContext (
291- client_context = TelemetryClientContext (
292- timestamp_millis = int (time .time () * 1000 ),
293- user_agent = self ._user_agent ,
294- )
295- ),
296- entry = FrontendLogEntry (
297- sql_driver_log = TelemetryEvent (
298- session_id = self ._session_id_hex ,
299- system_configuration = TelemetryHelper .get_driver_system_configuration (),
300- driver_connection_params = self ._driver_connection_params ,
301- error_info = error_info ,
302- )
303- ),
304- )
305- self ._export_event (telemetry_frontend_log )
306- except Exception as e :
307- logger .debug ("Failed to export failure log: %s" , e )
292+ error_info = DriverErrorInfo (error_name = error_name , stack_trace = error_message )
293+ self ._export_telemetry_log (error_info = error_info )
308294
309295 def export_latency_log (self , latency_ms , sql_execution_event , sql_statement_id ):
310- logger .debug ("Exporting latency log for connection %s" , self ._session_id_hex )
311- try :
312- telemetry_frontend_log = TelemetryFrontendLog (
313- frontend_log_event_id = str (uuid .uuid4 ()),
314- context = FrontendLogContext (
315- client_context = TelemetryClientContext (
316- timestamp_millis = int (time .time () * 1000 ),
317- user_agent = self ._user_agent ,
318- )
319- ),
320- entry = FrontendLogEntry (
321- sql_driver_log = TelemetryEvent (
322- session_id = self ._session_id_hex ,
323- system_configuration = TelemetryHelper .get_driver_system_configuration (),
324- driver_connection_params = self ._driver_connection_params ,
325- sql_statement_id = sql_statement_id ,
326- sql_operation = sql_execution_event ,
327- operation_latency_ms = latency_ms ,
328- )
329- ),
330- )
331- self ._export_event (telemetry_frontend_log )
332- except Exception as e :
333- logger .debug ("Failed to export latency log: %s" , e )
296+ self ._export_telemetry_log (
297+ sql_statement_id = sql_statement_id ,
298+ sql_operation = sql_execution_event ,
299+ operation_latency_ms = latency_ms ,
300+ )
334301
335302 def close (self ):
336303 """Flush remaining events before closing"""
0 commit comments