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