@@ -60,40 +60,34 @@ def get_driver_system_configuration(cls) -> DriverSystemConfiguration:
6060 def get_auth_mechanism (auth_provider ):
6161 """Get the auth mechanism for the auth provider."""
6262 # AuthMech is an enum with the following values:
63- # PAT, DATABRICKS_OAUTH, EXTERNAL_AUTH, CLIENT_CERT
63+ # TYPE_UNSPECIFIED, OTHER, PAT, OAUTH
6464
6565 if not auth_provider :
6666 return None
6767 if isinstance (auth_provider , AccessTokenAuthProvider ):
68- return AuthMech .PAT # Personal Access Token authentication
68+ return AuthMech .PAT
6969 elif isinstance (auth_provider , DatabricksOAuthProvider ):
70- return AuthMech .DATABRICKS_OAUTH # Databricks-managed OAuth flow
71- elif isinstance (auth_provider , ExternalAuthProvider ):
72- return (
73- AuthMech .EXTERNAL_AUTH
74- ) # External identity provider (AWS, Azure, etc.)
75- return AuthMech .CLIENT_CERT # Client certificate (ssl)
70+ return AuthMech .OAUTH
71+ else :
72+ return AuthMech .OTHER
7673
7774 @staticmethod
7875 def get_auth_flow (auth_provider ):
7976 """Get the auth flow for the auth provider."""
8077 # AuthFlow is an enum with the following values:
81- # TOKEN_PASSTHROUGH, BROWSER_BASED_AUTHENTICATION
78+ # TYPE_UNSPECIFIED, TOKEN_PASSTHROUGH, CLIENT_CREDENTIALS , BROWSER_BASED_AUTHENTICATION
8279
8380 if not auth_provider :
8481 return None
85-
8682 if isinstance (auth_provider , DatabricksOAuthProvider ):
8783 if auth_provider ._access_token and auth_provider ._refresh_token :
88- return (
89- AuthFlow .TOKEN_PASSTHROUGH
90- ) # Has existing tokens, no user interaction needed
91- if hasattr (auth_provider , "oauth_manager" ):
92- return (
93- AuthFlow .BROWSER_BASED_AUTHENTICATION
94- ) # Will initiate OAuth flow requiring browser
95-
96- return None
84+ return AuthFlow .TOKEN_PASSTHROUGH
85+ else :
86+ return AuthFlow .BROWSER_BASED_AUTHENTICATION
87+ elif isinstance (auth_provider , ExternalAuthProvider ):
88+ return AuthFlow .CLIENT_CREDENTIALS
89+ else :
90+ return None
9791
9892
9993class BaseTelemetryClient (ABC ):
@@ -104,21 +98,23 @@ class BaseTelemetryClient(ABC):
10498
10599 @abstractmethod
106100 def export_initial_telemetry_log (self , driver_connection_params , user_agent ):
107- raise NotImplementedError (
108- "Subclasses must implement export_initial_telemetry_log"
109- )
101+ logger .debug ("subclass must implement export_initial_telemetry_log" )
102+ pass
110103
111104 @abstractmethod
112105 def export_failure_log (self , error_name , error_message ):
113- raise NotImplementedError ("Subclasses must implement export_failure_log" )
106+ logger .debug ("subclass must implement export_failure_log" )
107+ pass
114108
115109 @abstractmethod
116110 def export_latency_log (self , latency_ms , sql_execution_event , sql_statement_id ):
117- raise NotImplementedError ("Subclasses must implement export_latency_log" )
111+ logger .debug ("subclass must implement export_latency_log" )
112+ pass
118113
119114 @abstractmethod
120115 def close (self ):
121- raise NotImplementedError ("Subclasses must implement close" )
116+ logger .debug ("subclass must implement close" )
117+ pass
122118
123119
124120class NoopTelemetryClient (BaseTelemetryClient ):
@@ -157,6 +153,8 @@ class TelemetryClient(BaseTelemetryClient):
157153 TELEMETRY_AUTHENTICATED_PATH = "/telemetry-ext"
158154 TELEMETRY_UNAUTHENTICATED_PATH = "/telemetry-unauth"
159155
156+ DEFAULT_BATCH_SIZE = 100
157+
160158 def __init__ (
161159 self ,
162160 telemetry_enabled ,
@@ -167,12 +165,12 @@ def __init__(
167165 ):
168166 logger .debug ("Initializing TelemetryClient for connection: %s" , session_id_hex )
169167 self ._telemetry_enabled = telemetry_enabled
170- self ._batch_size = 10 # TODO: Decide on batch size
168+ self ._batch_size = self . DEFAULT_BATCH_SIZE
171169 self ._session_id_hex = session_id_hex
172170 self ._auth_provider = auth_provider
173171 self ._user_agent = None
174172 self ._events_batch = []
175- self ._lock = threading .Lock ()
173+ self ._lock = threading .RLock ()
176174 self ._driver_connection_params = None
177175 self ._host_url = host_url
178176 self ._executor = executor
0 commit comments