Skip to content

Commit 9e5a6ec

Browse files
committed
made telemetry client close a module-level function
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent d328fc3 commit 9e5a6ec

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

src/databricks/sql/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
TelemetryHelper,
5757
initialize_telemetry_client,
5858
get_telemetry_client,
59+
close_telemetry_client,
5960
)
6061
from databricks.sql.telemetry.models.enums import DatabricksClientType
6162
from databricks.sql.telemetry.models.event import (
@@ -471,7 +472,7 @@ def _close(self, close_cursors=True) -> None:
471472

472473
self.open = False
473474

474-
self._telemetry_client.close()
475+
close_telemetry_client(self.get_session_id_hex())
475476

476477
def commit(self):
477478
"""No-op because Databricks does not support transactions"""

src/databricks/sql/telemetry/telemetry_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,6 @@ def close(self):
300300
"""Flush remaining events before closing"""
301301
logger.debug("Closing TelemetryClient for connection %s", self._session_id_hex)
302302
self._flush()
303-
_remove_telemetry_client(self._session_id_hex)
304303

305304

306305
# Module-level state
@@ -392,13 +391,14 @@ def get_telemetry_client(session_id_hex):
392391
return NOOP_TELEMETRY_CLIENT
393392

394393

395-
def _remove_telemetry_client(session_id_hex):
394+
def close_telemetry_client(session_id_hex):
396395
"""Remove the telemetry client for a specific connection"""
397396
global _initialized, _executor
398397
with _lock:
399398
if session_id_hex in _clients:
400399
logger.debug("Removing telemetry client for connection %s", session_id_hex)
401-
_clients.pop(session_id_hex, None)
400+
telemetry_client = _clients.pop(session_id_hex, None)
401+
telemetry_client.close()
402402

403403
# Shutdown executor if no more clients
404404
if not _clients and _executor:

tests/unit/test_telemetry.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
NOOP_TELEMETRY_CLIENT,
99
initialize_telemetry_client,
1010
get_telemetry_client,
11-
_remove_telemetry_client,
11+
close_telemetry_client,
1212
TelemetryHelper,
1313
BaseTelemetryClient
1414
)
@@ -385,7 +385,33 @@ def test_close_telemetry_client(self, telemetry_system_reset):
385385
client = get_telemetry_client(session_id_hex)
386386
assert isinstance(client, TelemetryClient)
387387

388-
_remove_telemetry_client(session_id_hex)
388+
client.close = MagicMock()
389+
390+
close_telemetry_client(session_id_hex)
391+
392+
client.close.assert_called_once()
393+
394+
client = get_telemetry_client(session_id_hex)
395+
assert client is NOOP_TELEMETRY_CLIENT
396+
397+
def test_close_telemetry_client_noop(self, telemetry_system_reset):
398+
"""Test closing a no-op telemetry client."""
399+
session_id_hex = "test-uuid"
400+
initialize_telemetry_client(
401+
telemetry_enabled=False,
402+
session_id_hex=session_id_hex,
403+
auth_provider=MagicMock(),
404+
host_url="test-host",
405+
)
406+
407+
client = get_telemetry_client(session_id_hex)
408+
assert client is NOOP_TELEMETRY_CLIENT
409+
410+
client.close = MagicMock()
411+
412+
close_telemetry_client(session_id_hex)
413+
414+
client.close.assert_called_once()
389415

390416
client = get_telemetry_client(session_id_hex)
391417
assert client is NOOP_TELEMETRY_CLIENT

0 commit comments

Comments
 (0)