@@ -248,14 +248,24 @@ def _telemetry_request_callback(self, future):
248
248
except Exception as e :
249
249
logger .debug ("Telemetry request failed with exception: %s" , e )
250
250
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 )
255
259
256
260
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 )
259
269
260
270
telemetry_frontend_log = TelemetryFrontendLog (
261
271
frontend_log_event_id = str (uuid .uuid4 ()),
@@ -265,72 +275,29 @@ def export_initial_telemetry_log(self, driver_connection_params, user_agent):
265
275
user_agent = self ._user_agent ,
266
276
)
267
277
),
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 )),
275
279
)
276
280
277
281
self ._export_event (telemetry_frontend_log )
278
282
279
283
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 ()
281
290
282
291
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 )
308
294
309
295
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
+ )
334
301
335
302
def close (self ):
336
303
"""Flush remaining events before closing"""
0 commit comments