Skip to content

Commit 2522751

Browse files
committed
try-catch blocks to make telemetry failures non-blocking for connector operations
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent 52a02f0 commit 2522751

File tree

1 file changed

+57
-41
lines changed

1 file changed

+57
-41
lines changed

src/databricks/sql/telemetry/telemetry_client.py

Lines changed: 57 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -244,56 +244,72 @@ def export_initial_telemetry_log(self, driver_connection_params, user_agent):
244244
"Exporting initial telemetry log for connection %s", self._connection_uuid
245245
)
246246

247-
self._driver_connection_params = driver_connection_params
248-
self._user_agent = user_agent
249-
250-
telemetry_frontend_log = TelemetryFrontendLog(
251-
frontend_log_event_id=str(uuid.uuid4()),
252-
context=FrontendLogContext(
253-
client_context=TelemetryClientContext(
254-
timestamp_millis=int(time.time() * 1000),
255-
user_agent=self._user_agent,
256-
)
257-
),
258-
entry=FrontendLogEntry(
259-
sql_driver_log=TelemetryEvent(
260-
session_id=self._connection_uuid,
261-
system_configuration=TelemetryHelper.getDriverSystemConfiguration(),
262-
driver_connection_params=self._driver_connection_params,
263-
)
264-
),
265-
)
247+
try:
248+
self._driver_connection_params = driver_connection_params
249+
self._user_agent = user_agent
250+
251+
telemetry_frontend_log = TelemetryFrontendLog(
252+
frontend_log_event_id=str(uuid.uuid4()),
253+
context=FrontendLogContext(
254+
client_context=TelemetryClientContext(
255+
timestamp_millis=int(time.time() * 1000),
256+
user_agent=self._user_agent,
257+
)
258+
),
259+
entry=FrontendLogEntry(
260+
sql_driver_log=TelemetryEvent(
261+
session_id=self._connection_uuid,
262+
system_configuration=TelemetryHelper.getDriverSystemConfiguration(),
263+
driver_connection_params=self._driver_connection_params,
264+
)
265+
),
266+
)
266267

267-
self.export_event(telemetry_frontend_log)
268+
self.export_event(telemetry_frontend_log)
269+
except Exception as e:
270+
logger.debug("Failed to export initial telemetry log: %s", e)
268271

269272
def export_failure_log(self, error_name, error_message):
270273
logger.debug("Exporting failure log for connection %s", self._connection_uuid)
271-
error_info = DriverErrorInfo(error_name=error_name, stack_trace=error_message)
272-
telemetry_frontend_log = TelemetryFrontendLog(
273-
frontend_log_event_id=str(uuid.uuid4()),
274-
context=FrontendLogContext(
275-
client_context=TelemetryClientContext(
276-
timestamp_millis=int(time.time() * 1000),
277-
user_agent=self._user_agent,
278-
)
279-
),
280-
entry=FrontendLogEntry(
281-
sql_driver_log=TelemetryEvent(
282-
session_id=self._connection_uuid,
283-
system_configuration=TelemetryHelper.getDriverSystemConfiguration(),
284-
driver_connection_params=self._driver_connection_params,
285-
error_info=error_info,
286-
)
287-
),
288-
)
289-
self.export_event(telemetry_frontend_log)
274+
try:
275+
error_info = DriverErrorInfo(
276+
error_name=error_name, stack_trace=error_message
277+
)
278+
telemetry_frontend_log = TelemetryFrontendLog(
279+
frontend_log_event_id=str(uuid.uuid4()),
280+
context=FrontendLogContext(
281+
client_context=TelemetryClientContext(
282+
timestamp_millis=int(time.time() * 1000),
283+
user_agent=self._user_agent,
284+
)
285+
),
286+
entry=FrontendLogEntry(
287+
sql_driver_log=TelemetryEvent(
288+
session_id=self._connection_uuid,
289+
system_configuration=TelemetryHelper.getDriverSystemConfiguration(),
290+
driver_connection_params=self._driver_connection_params,
291+
error_info=error_info,
292+
)
293+
),
294+
)
295+
self.export_event(telemetry_frontend_log)
296+
except Exception as e:
297+
logger.debug("Failed to export failure log: %s", e)
290298

291299
def close(self):
292300
"""Flush remaining events before closing"""
293301
logger.debug("Closing TelemetryClient for connection %s", self._connection_uuid)
294-
self.flush()
302+
try:
303+
self.flush()
304+
except Exception as e:
305+
logger.debug("Failed to flush telemetry during close: %s", e)
295306

296-
TelemetryClientFactory.close(self._connection_uuid)
307+
try:
308+
TelemetryClientFactory.close(self._connection_uuid)
309+
except Exception as e:
310+
logger.debug(
311+
"Failed to remove telemetry client from telemetry clientfactory: %s", e
312+
)
297313

298314

299315
class TelemetryClientFactory:

0 commit comments

Comments
 (0)