@@ -158,7 +158,7 @@ class AtlanClient(BaseSettings):
158
158
retry : Retry = DEFAULT_RETRY
159
159
_session : requests .Session = PrivateAttr (default_factory = get_session )
160
160
_request_params : dict = PrivateAttr ()
161
- _has_retried_for_401 : bool = PrivateAttr ( default = False )
161
+ _401_tls : local = local ( )
162
162
_user_id : Optional [str ] = PrivateAttr (default = None )
163
163
_workflow_client : Optional [WorkflowClient ] = PrivateAttr (default = None )
164
164
_credential_client : Optional [CredentialClient ] = PrivateAttr (default = None )
@@ -223,6 +223,7 @@ def __init__(self, **data):
223
223
session .mount (HTTPS_PREFIX , adapter )
224
224
session .mount (HTTP_PREFIX , adapter )
225
225
AtlanClient .set_current_client (self )
226
+ self ._401_tls .has_retried = False
226
227
227
228
@property
228
229
def admin (self ) -> AdminClient :
@@ -462,7 +463,7 @@ def _call_api_internal(
462
463
if response is None :
463
464
return None
464
465
if response .status_code == api .expected_status :
465
- self ._has_retried_for_401 = False
466
+ self ._401_tls . has_retried = False
466
467
try :
467
468
if (
468
469
response .content is None
@@ -545,7 +546,7 @@ def _call_api_internal(
545
546
# on authentication failure (token may have expired)
546
547
if (
547
548
self ._user_id
548
- and not self ._has_retried_for_401
549
+ and not self ._401_tls . has_retried
549
550
and response .status_code
550
551
== ErrorCode .AUTHENTICATION_PASSTHROUGH .http_error_code
551
552
):
@@ -698,7 +699,7 @@ def _handle_401_token_refresh(
698
699
"""
699
700
new_token = self .impersonate .user (user_id = self ._user_id )
700
701
self .api_key = new_token
701
- self ._has_retried_for_401 = True
702
+ self ._401_tls . has_retried = True
702
703
params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
703
704
self ._request_params ["headers" ]["authorization" ] = f"Bearer { self .api_key } "
704
705
LOGGER .debug ("Successfully completed 401 automatic token refresh." )
0 commit comments