synapse-product/synapse/storage
Sean Quah 9cae44f49e
Track unconverted device list outbound pokes using a position instead (#14516)
When a local device list change is added to
`device_lists_changes_in_room`, the `converted_to_destinations` flag is
set to `FALSE` and the `_handle_new_device_update_async` background
process is started. This background process looks for unconverted rows
in `device_lists_changes_in_room`, copies them to
`device_lists_outbound_pokes` and updates the flag.

To update the `converted_to_destinations` flag, the database performs a
`DELETE` and `INSERT` internally, which fragments the table. To avoid
this, track unconverted rows using a `(stream ID, room ID)` position
instead of the flag.

From now on, the `converted_to_destinations` column indicates rows that
need converting to outbound pokes, but does not indicate whether the
conversion has already taken place.

Closes #14037.

Signed-off-by: Sean Quah <seanq@matrix.org>
2022-11-22 16:46:52 +00:00
..
controllers Remove redundant types from comments. (#14412) 2022-11-16 15:25:24 +00:00
databases Track unconverted device list outbound pokes using a position instead (#14516) 2022-11-22 16:46:52 +00:00
engines Drop support for Postgres 10 in full text search code. (#14397) 2022-11-09 09:55:34 -05:00
schema Track unconverted device list outbound pokes using a position instead (#14516) 2022-11-22 16:46:52 +00:00
util Reintroduce #14376, with bugfix for monoliths (#14468) 2022-11-16 22:16:46 +00:00
__init__.py Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
_base.py Bump flake8-bugbear from 22.9.23 to 22.10.27 (#14329) 2022-11-04 18:43:14 +00:00
background_updates.py Generate separate snapshots for logical databases (#13792) 2022-09-20 14:14:12 +01:00
database.py Track unconverted device list outbound pokes using a position instead (#14516) 2022-11-22 16:46:52 +00:00
keys.py Use auto_attribs/native type hints for attrs classes. (#11692) 2022-01-13 13:49:28 +00:00
prepare_database.py Snapshot schema 72 (#13873) 2022-09-26 18:28:32 +01:00
push_rule.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
roommember.py Do not include rooms with an unknown room version in a sync response. (#10644) 2021-08-19 11:12:55 -04:00
state.py Update the rejected state of events during resync (#13459) 2022-08-11 10:42:24 +00:00
types.py Tidy up and type-hint the database engine modules (#12734) 2022-05-17 00:34:38 +01:00