diff options
author | JohannesKleine <linux@cj-k.de> | 2021-11-01 11:40:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 10:40:41 +0000 |
commit | 29ffd680bf0d0bf50383ad23404b348bf9cf90aa (patch) | |
tree | c5ada862758f6c93766db1aad67c51f72d8443fe | |
parent | Deprecate user_may_create_room_with_invites (#11206) (diff) | |
download | synapse-29ffd680bf0d0bf50383ad23404b348bf9cf90aa.tar.xz |
Stop synapse from saving messages in device_inbox for hidden devices. (#10097)
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
-rw-r--r-- | changelog.d/10097.bugfix | 1 | ||||
-rw-r--r-- | synapse/storage/databases/main/deviceinbox.py | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/changelog.d/10097.bugfix b/changelog.d/10097.bugfix new file mode 100644 index 0000000000..5d3d9587c2 --- /dev/null +++ b/changelog.d/10097.bugfix @@ -0,0 +1 @@ +Fix a long-standing bug which allowed hidden devices to receive to-device messages, resulting in unnecessary database bloat. diff --git a/synapse/storage/databases/main/deviceinbox.py b/synapse/storage/databases/main/deviceinbox.py index d03b5e5a7d..25e9c1efe1 100644 --- a/synapse/storage/databases/main/deviceinbox.py +++ b/synapse/storage/databases/main/deviceinbox.py @@ -489,10 +489,12 @@ class DeviceInboxWorkerStore(SQLBaseStore): devices = list(messages_by_device.keys()) if len(devices) == 1 and devices[0] == "*": # Handle wildcard device_ids. + # We exclude hidden devices (such as cross-signing keys) here as they are + # not expected to receive to-device messages. devices = self.db_pool.simple_select_onecol_txn( txn, table="devices", - keyvalues={"user_id": user_id}, + keyvalues={"user_id": user_id, "hidden": False}, retcol="device_id", ) @@ -505,10 +507,12 @@ class DeviceInboxWorkerStore(SQLBaseStore): if not devices: continue + # We exclude hidden devices (such as cross-signing keys) here as they are + # not expected to receive to-device messages. rows = self.db_pool.simple_select_many_txn( txn, table="devices", - keyvalues={"user_id": user_id}, + keyvalues={"user_id": user_id, "hidden": False}, column="device_id", iterable=devices, retcols=("device_id",), |