Do not rely on streaming events, as media repo doesn't

This commit is contained in:
Erik Johnston 2020-01-08 14:23:27 +00:00
parent 4e2a072a05
commit 187dc6ad02

View file

@ -448,21 +448,32 @@ class RoomWorkerStore(SQLBaseStore):
""" """
mxc_re = re.compile("^mxc://([^/]+)/([^/#?]+)") mxc_re = re.compile("^mxc://([^/]+)/([^/#?]+)")
next_token = self.get_current_events_token() + 1 next_token = None
local_media_mxcs = [] local_media_mxcs = []
remote_media_mxcs = [] remote_media_mxcs = []
while next_token: while True:
sql = """ if next_token is None:
SELECT stream_ordering, json FROM events sql = """
JOIN event_json USING (room_id, event_id) SELECT stream_ordering, json FROM events
WHERE room_id = ? JOIN event_json USING (room_id, event_id)
AND stream_ordering < ? WHERE room_id = ?
AND contains_url = ? AND outlier = ? AND contains_url = ? AND outlier = ?
ORDER BY stream_ordering DESC ORDER BY stream_ordering DESC
LIMIT ? LIMIT ?
""" """
txn.execute(sql, (room_id, next_token, True, False, 100)) txn.execute(sql, (room_id, True, False, 100))
else:
sql = """
SELECT stream_ordering, json FROM events
JOIN event_json USING (room_id, event_id)
WHERE room_id = ?
AND stream_ordering < ?
AND contains_url = ? AND outlier = ?
ORDER BY stream_ordering DESC
LIMIT ?
"""
txn.execute(sql, (room_id, next_token, True, False, 100))
next_token = None next_token = None
for stream_ordering, content_json in txn: for stream_ordering, content_json in txn:
@ -484,6 +495,9 @@ class RoomWorkerStore(SQLBaseStore):
else: else:
remote_media_mxcs.append((hostname, media_id)) remote_media_mxcs.append((hostname, media_id))
if next_token is None:
break
return local_media_mxcs, remote_media_mxcs return local_media_mxcs, remote_media_mxcs