Skip to content
Snippets Groups Projects
Unverified Commit 1579fdd5 authored by Erik Johnston's avatar Erik Johnston Committed by GitHub
Browse files

Ensure we always drop the federation inbound lock (#10336)

parent 974261cd
No related branches found
No related tags found
No related merge requests found
Fix bug where inbound federation in a room could be delayed due to not correctly dropping a lock. Introduced in v1.37.1.
......@@ -949,6 +949,7 @@ class FederationServer(FederationBase):
room_id, room_version
)
if not next:
await lock.release()
return
origin, event = next
......
......@@ -310,14 +310,25 @@ class Lock:
_excinst: Optional[BaseException],
_exctb: Optional[TracebackType],
) -> bool:
await self.release()
return False
async def release(self) -> None:
"""Release the lock.
This is automatically called when using the lock as a context manager.
"""
if self._dropped:
return
if self._looping_call.running:
self._looping_call.stop()
await self._store._drop_lock(self._lock_name, self._lock_key, self._token)
self._dropped = True
return False
def __del__(self) -> None:
if not self._dropped:
# We should not be dropped without the lock being released (unless
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment