@@ -59,17 +59,17 @@ def __init__(
59
59
# Thread-safe cache for user contexts
60
60
self ._user_context_cache : dict [str , CachedUserContext ] = {}
61
61
self ._cache_lock = asyncio .Lock ()
62
-
62
+
63
63
# Per-MCP-token locks for refresh operations to prevent race conditions
64
64
self ._refresh_locks : dict [str , asyncio .Lock ] = {}
65
65
self ._refresh_locks_lock = asyncio .Lock ()
66
66
67
67
async def _get_refresh_lock (self , mcp_token : str ) -> asyncio .Lock :
68
68
"""Get or create a refresh lock for the given MCP token.
69
-
69
+
70
70
Args:
71
71
mcp_token: MCP token to get lock for
72
-
72
+
73
73
Returns:
74
74
Lock specific to this MCP token
75
75
"""
@@ -98,9 +98,7 @@ async def _get_cached_user_context(self, mcp_token: str) -> UserContext | None:
98
98
logger .debug (f"⏰ Cache EXPIRED - removed entry for token { mcp_token [:20 ]} ..." )
99
99
return None
100
100
101
- logger .debug (
102
- f"🎯 Cache HIT - using cached user context for token { mcp_token [:20 ]} ..."
103
- )
101
+ logger .debug (f"🎯 Cache HIT - using cached user context for token { mcp_token [:20 ]} ..." )
104
102
return cached_entry .user_context
105
103
106
104
async def _cache_user_context (self , mcp_token : str , user_context : UserContext ) -> None :
@@ -151,14 +149,16 @@ async def _attempt_token_refresh(self, mcp_token: str, external_token: str) -> s
151
149
152
150
# Get the refresh lock for this specific MCP token to prevent race conditions
153
151
refresh_lock = await self ._get_refresh_lock (mcp_token )
154
-
152
+
155
153
async with refresh_lock :
156
154
try :
157
155
# Check if another request already refreshed the token
158
156
# by checking if we have a valid cached user context now
159
157
cached_context = await self ._get_cached_user_context (mcp_token )
160
158
if cached_context is not None :
161
- logger .debug (f"🎯 Token already refreshed by another request for { mcp_token [:20 ]} ..." )
159
+ logger .debug (
160
+ f"🎯 Token already refreshed by another request for { mcp_token [:20 ]} ..."
161
+ )
162
162
# Get the current external token from token mapping
163
163
current_external_token = self .oauth_server ._token_mapping .get (mcp_token )
164
164
return current_external_token
0 commit comments