From d44ee3473ef2c3820446de533db47fed5588954a Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 26 Jun 2024 10:43:42 +0100 Subject: [PATCH 1/2] Handle multiple rows device inbox --- synapse/storage/databases/main/deviceinbox.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/synapse/storage/databases/main/deviceinbox.py b/synapse/storage/databases/main/deviceinbox.py index 07333efff86..5a752b9b8c8 100644 --- a/synapse/storage/databases/main/deviceinbox.py +++ b/synapse/storage/databases/main/deviceinbox.py @@ -825,14 +825,13 @@ def add_messages_txn( # Check if we've already inserted a matching message_id for that # origin. This can happen if the origin doesn't receive our # acknowledgement from the first time we received the message. - already_inserted = self.db_pool.simple_select_one_txn( + already_inserted = self.db_pool.simple_select_list_txn( txn, table="device_federation_inbox", keyvalues={"origin": origin, "message_id": message_id}, retcols=("message_id",), - allow_none=True, ) - if already_inserted is not None: + if already_inserted: return # Add an entry for this message_id so that we know we've processed From 7b457389ee9882586d3d9d819e8f1bd110cd9afb Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 26 Jun 2024 10:46:57 +0100 Subject: [PATCH 2/2] Newsfile --- changelog.d/17362.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/17362.bugfix diff --git a/changelog.d/17362.bugfix b/changelog.d/17362.bugfix new file mode 100644 index 00000000000..a91ce9fc067 --- /dev/null +++ b/changelog.d/17362.bugfix @@ -0,0 +1 @@ +Fix rare race which causes no new to-device messages to be received from remote server.