From 695ad671bd78acc146f0dc86a63f79e0d0382d23 Mon Sep 17 00:00:00 2001 From: Tulir Asokan <tulir@maunium.net> Date: Fri, 5 Jun 2020 14:10:13 +0300 Subject: [PATCH] Maybe fix notices going out in the wrong order --- mautrix_facebook/user.py | 6 +++++- requirements.txt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mautrix_facebook/user.py b/mautrix_facebook/user.py index e0c6a8b..f50a6f7 100644 --- a/mautrix_facebook/user.py +++ b/mautrix_facebook/user.py @@ -48,6 +48,7 @@ class User(BaseUser): notice_room: RoomID _notice_room_lock: asyncio.Lock + _notice_send_lock: asyncio.Lock is_admin: bool permission_level: str _is_logged_in: Optional[bool] @@ -69,6 +70,7 @@ class User(BaseUser): self.mxid = mxid self.notice_room = notice_room self._notice_room_lock = asyncio.Lock() + self._notice_send_lock = asyncio.Lock() self.by_mxid[mxid] = self self.command_status = None self.is_whitelisted, self.is_admin, self.permission_level = config.get_permissions(mxid) @@ -409,7 +411,9 @@ class User(BaseUser): else MessageType.NOTICE)) if edit: content.set_edit(edit) - event_id = await self.az.intent.send_message(await self.get_notice_room(), content) + # This is locked to prevent notices going out in the wrong order + async with self._notice_send_lock: + event_id = await self.az.intent.send_message(await self.get_notice_room(), content) except Exception: self.log.warning("Failed to send bridge notice", exc_info=True) return edit or event_id diff --git a/requirements.txt b/requirements.txt index f3fbb4b..cd39601 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,5 +4,5 @@ alembic>=1,<2 ruamel.yaml>=0.15.94,<0.17 commonmark>=0.8,<0.10 python-magic>=0.4,<0.5 -mautrix==0.5.0 +mautrix==0.5.1 fbchat-asyncio==0.6.0b2 -- GitLab