@@ -143,7 +143,7 @@ class AtlanClient(BaseSettings):
143
143
connect_timeout : float = 30.0 # 30 secs
144
144
read_timeout : float = 900.0 # 15 mins
145
145
retry : Retry = DEFAULT_RETRY
146
- _401_has_retried : bool = PrivateAttr ( default = False )
146
+ _401_has_retried : bool = ContextVar ( "_401_has_retried" , default = False )
147
147
_session : requests .Session = PrivateAttr (default_factory = get_session )
148
148
_request_params : dict = PrivateAttr ()
149
149
_user_id : Optional [str ] = PrivateAttr (default = None )
@@ -188,7 +188,7 @@ def __init__(self, **data):
188
188
adapter = HTTPAdapter (max_retries = self .retry )
189
189
session .mount (HTTPS_PREFIX , adapter )
190
190
session .mount (HTTP_PREFIX , adapter )
191
- self ._401_has_retried = False
191
+ self ._401_has_retried . set ( False )
192
192
193
193
@property
194
194
def admin (self ) -> AdminClient :
@@ -411,11 +411,11 @@ def _call_api_internal(
411
411
# - But if the next response is != 401 (e.g. 403), and `has_retried = True`,
412
412
# then we should reset `has_retried = False` so that future 401s can trigger a new token refresh.
413
413
if (
414
- self ._401_has_retried
414
+ self ._401_has_retried . get ()
415
415
and response .status_code
416
416
!= ErrorCode .AUTHENTICATION_PASSTHROUGH .http_error_code
417
417
):
418
- self ._401_has_retried = False
418
+ self ._401_has_retried . set ( False )
419
419
420
420
if response .status_code == api .expected_status :
421
421
try :
@@ -511,7 +511,7 @@ def _call_api_internal(
511
511
# on authentication failure (token may have expired)
512
512
if (
513
513
self ._user_id
514
- and not self ._401_has_retried
514
+ and not self ._401_has_retried . get ()
515
515
and response .status_code
516
516
== ErrorCode .AUTHENTICATION_PASSTHROUGH .http_error_code
517
517
):
@@ -673,7 +673,7 @@ def _handle_401_token_refresh(
673
673
)
674
674
raise
675
675
self .api_key = new_token
676
- self ._401_has_retried = True
676
+ self ._401_has_retried . set ( True )
677
677
params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
678
678
self ._request_params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
679
679
LOGGER .debug ("Successfully completed 401 automatic token refresh." )
0 commit comments