@@ -143,7 +143,7 @@ class AtlanClient(BaseSettings):
143143 connect_timeout : float = 30.0 # 30 secs
144144 read_timeout : float = 900.0 # 15 mins
145145 retry : Retry = DEFAULT_RETRY
146- _401_has_retried : bool = PrivateAttr ( default = False )
146+ _401_has_retried : bool = ContextVar ( "_401_has_retried" , default = False )
147147 _session : requests .Session = PrivateAttr (default_factory = get_session )
148148 _request_params : dict = PrivateAttr ()
149149 _user_id : Optional [str ] = PrivateAttr (default = None )
@@ -188,7 +188,7 @@ def __init__(self, **data):
188188 adapter = HTTPAdapter (max_retries = self .retry )
189189 session .mount (HTTPS_PREFIX , adapter )
190190 session .mount (HTTP_PREFIX , adapter )
191- self ._401_has_retried = False
191+ self ._401_has_retried . set ( False )
192192
193193 @property
194194 def admin (self ) -> AdminClient :
@@ -411,11 +411,11 @@ def _call_api_internal(
411411 # - But if the next response is != 401 (e.g. 403), and `has_retried = True`,
412412 # then we should reset `has_retried = False` so that future 401s can trigger a new token refresh.
413413 if (
414- self ._401_has_retried
414+ self ._401_has_retried . get ()
415415 and response .status_code
416416 != ErrorCode .AUTHENTICATION_PASSTHROUGH .http_error_code
417417 ):
418- self ._401_has_retried = False
418+ self ._401_has_retried . set ( False )
419419
420420 if response .status_code == api .expected_status :
421421 try :
@@ -511,7 +511,7 @@ def _call_api_internal(
511511 # on authentication failure (token may have expired)
512512 if (
513513 self ._user_id
514- and not self ._401_has_retried
514+ and not self ._401_has_retried . get ()
515515 and response .status_code
516516 == ErrorCode .AUTHENTICATION_PASSTHROUGH .http_error_code
517517 ):
@@ -673,7 +673,7 @@ def _handle_401_token_refresh(
673673 )
674674 raise
675675 self .api_key = new_token
676- self ._401_has_retried = True
676+ self ._401_has_retried . set ( True )
677677 params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
678678 self ._request_params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
679679 LOGGER .debug ("Successfully completed 401 automatic token refresh." )
0 commit comments