This commit is contained in:
Erik Johnston 2024-06-05 16:03:35 +01:00
parent bdf82efea5
commit 2813522704
2 changed files with 11 additions and 7 deletions

View file

@ -549,10 +549,14 @@ class DeviceListsStream(_StreamFromIdGen):
@attr.s(slots=True, frozen=True, auto_attribs=True) @attr.s(slots=True, frozen=True, auto_attribs=True)
class DeviceListsStreamRow: class DeviceListsStreamRow:
entity: str user_id: str
# Indicates that a user has signed their own device with their user-signing key # Indicates that a user has signed their own device with their user-signing key
is_signature: bool is_signature: bool
# Indicates if this is a notification that we've calculated the hosts we
# need to send the update to.
hosts_calculated: bool
NAME = "device_lists" NAME = "device_lists"
ROW_TYPE = DeviceListsStreamRow ROW_TYPE = DeviceListsStreamRow
@ -594,13 +598,13 @@ class DeviceListsStream(_StreamFromIdGen):
upper_limit_token = min(upper_limit_token, signatures_to_token) upper_limit_token = min(upper_limit_token, signatures_to_token)
device_updates = [ device_updates = [
(stream_id, (entity, False)) (stream_id, (entity, False, hosts))
for stream_id, (entity,) in device_updates for stream_id, (entity, hosts) in device_updates
if stream_id <= upper_limit_token if stream_id <= upper_limit_token
] ]
signatures_updates = [ signatures_updates = [
(stream_id, (entity, True)) (stream_id, (entity, True, False))
for stream_id, (entity,) in signatures_updates for stream_id, (entity,) in signatures_updates
if stream_id <= upper_limit_token if stream_id <= upper_limit_token
] ]

View file

@ -1018,10 +1018,10 @@ class DeviceWorkerStore(RoomMemberWorkerStore, EndToEndKeyWorkerStore):
# This query Does The Right Thing where it'll correctly apply the # This query Does The Right Thing where it'll correctly apply the
# bounds to the inner queries. # bounds to the inner queries.
sql = """ sql = """
SELECT stream_id, entity FROM ( SELECT stream_id, user_id, hosts FROM (
SELECT stream_id, user_id AS entity FROM device_lists_stream SELECT stream_id, user_id, false AS hosts FROM device_lists_stream
UNION ALL UNION ALL
SELECT stream_id, destination AS entity FROM device_lists_outbound_pokes SELECT DISTINCT stream_id, user_id, true AS hosts FROM device_lists_outbound_pokes
) AS e ) AS e
WHERE ? < stream_id AND stream_id <= ? WHERE ? < stream_id AND stream_id <= ?
ORDER BY stream_id ASC ORDER BY stream_id ASC