Fix NamespaceLock context variable timing to prevent lock bricking
* Acquire lock before setting ContextVar * Prevent state corruption on cancellation * Fix permanent lock brick scenario * Store context only after success * Handle acquisition failure properly
This commit is contained in:
parent
95e1fb1612
commit
e8383df3b8
1 changed files with 5 additions and 2 deletions
|
|
@ -1514,9 +1514,12 @@ class NamespaceLock:
|
|||
enable_logging=self._enable_logging,
|
||||
)
|
||||
|
||||
# Store context in this coroutine's ContextVar
|
||||
# Acquire the lock first, then store context only after successful acquisition
|
||||
# This prevents the ContextVar from being set if acquisition fails (e.g., due to cancellation),
|
||||
# which would permanently brick the lock
|
||||
result = await ctx.__aenter__()
|
||||
self._ctx_var.set(ctx)
|
||||
return await ctx.__aenter__()
|
||||
return result
|
||||
|
||||
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
||||
"""Exit the current context and clean up"""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue