summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/17362.bugfix1
-rw-r--r--synapse/storage/databases/main/deviceinbox.py5
2 files changed, 3 insertions, 3 deletions
diff --git a/changelog.d/17362.bugfix b/changelog.d/17362.bugfix
new file mode 100644

index 0000000000..a91ce9fc06 --- /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. diff --git a/synapse/storage/databases/main/deviceinbox.py b/synapse/storage/databases/main/deviceinbox.py
index 07333efff8..5a752b9b8c 100644 --- a/synapse/storage/databases/main/deviceinbox.py +++ b/synapse/storage/databases/main/deviceinbox.py
@@ -825,14 +825,13 @@ class DeviceInboxWorkerStore(SQLBaseStore): # 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