Skip to content

Commit 564827f

Browse files
committed
fix: Prevent exception suppression in log_latency decorator
The decorator was using 'return' statements in the finally block, which suppressed exceptions raised in decorated methods. This caused downloader tests to fail as exceptions (ConnectionError, TimeoutError) were being swallowed. Fixed by nesting telemetry logic inside an if statement instead of using early returns, ensuring exceptions propagate correctly.
1 parent 581394a commit 564827f

File tree

1 file changed

+26
-30
lines changed

1 file changed

+26
-30
lines changed

src/databricks/sql/telemetry/latency_logger.py

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -194,36 +194,32 @@ def wrapper(self, *args, **kwargs):
194194
# Fast check: use cached telemetry_enabled flag from connection
195195
# Avoids dictionary lookup + instance check on every operation
196196
connection = getattr(self, "connection", None)
197-
if not connection or not getattr(
198-
connection, "telemetry_enabled", False
199-
):
200-
return
201-
202-
session_id_hex = connection.get_session_id_hex()
203-
if not session_id_hex:
204-
return
205-
206-
# Telemetry enabled - extract and send
207-
telemetry_data = _extract_telemetry_data(self)
208-
if not telemetry_data:
209-
return
210-
211-
sql_exec_event = SqlExecutionEvent(
212-
statement_type=statement_type,
213-
is_compressed=telemetry_data.get("is_compressed"),
214-
execution_result=telemetry_data.get("execution_result"),
215-
retry_count=telemetry_data.get("retry_count"),
216-
chunk_id=telemetry_data.get("chunk_id"),
217-
)
218-
219-
telemetry_client = TelemetryClientFactory.get_telemetry_client(
220-
session_id_hex
221-
)
222-
telemetry_client.export_latency_log(
223-
latency_ms=duration_ms,
224-
sql_execution_event=sql_exec_event,
225-
sql_statement_id=telemetry_data.get("statement_id"),
226-
)
197+
if connection and getattr(connection, "telemetry_enabled", False):
198+
session_id_hex = connection.get_session_id_hex()
199+
if session_id_hex:
200+
# Telemetry enabled - extract and send
201+
telemetry_data = _extract_telemetry_data(self)
202+
if telemetry_data:
203+
sql_exec_event = SqlExecutionEvent(
204+
statement_type=statement_type,
205+
is_compressed=telemetry_data.get("is_compressed"),
206+
execution_result=telemetry_data.get(
207+
"execution_result"
208+
),
209+
retry_count=telemetry_data.get("retry_count"),
210+
chunk_id=telemetry_data.get("chunk_id"),
211+
)
212+
213+
telemetry_client = (
214+
TelemetryClientFactory.get_telemetry_client(
215+
session_id_hex
216+
)
217+
)
218+
telemetry_client.export_latency_log(
219+
latency_ms=duration_ms,
220+
sql_execution_event=sql_exec_event,
221+
sql_statement_id=telemetry_data.get("statement_id"),
222+
)
227223

228224
return wrapper
229225

0 commit comments

Comments
 (0)