Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 82c379c

Browse files
committed
Merge commit 'e45b83411' into anoa/dinsic_release_1_21_x
* commit 'e45b83411': Add types to async_helpers (#8260) Fix mypy error on develop (#8282) Include method in thumbnail media name (#7124) Add types to StreamToken and RoomStreamToken (#8279) Add a config option for validating 'next_link' parameters against a domain whitelist (#8275) Clean up types for PaginationConfig (#8250) Use the right constructor for log records (#8278) Fix `MultiWriterIdGenerator.current_position`. (#8257)
2 parents 8228b9e + e45b834 commit 82c379c

28 files changed

+553
-242
lines changed

changelog.d/7124.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix a bug in the media repository where remote thumbnails with the same size but different crop methods would overwrite each other. Contributed by @deepbluev7.

changelog.d/8250.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Clean up type hints for `PaginationConfig`.

changelog.d/8257.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix non-user visible bug in implementation of `MultiWriterIdGenerator.get_current_token_for_writer`.

changelog.d/8260.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add type hints to `synapse.util.async_helpers`.

changelog.d/8278.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix a bug which cause the logging system to report errors, if `DEBUG` was enabled and no `context` filter was applied.

changelog.d/8279.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add type hints to `StreamToken` and `RoomStreamToken` classes.

changelog.d/8282.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Clean up type hints for `PaginationConfig`.

mypy.ini

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ files =
3434
synapse/http/federation/well_known_resolver.py,
3535
synapse/http/server.py,
3636
synapse/http/site.py,
37-
synapse/logging/,
37+
synapse/logging,
3838
synapse/metrics,
3939
synapse/module_api,
4040
synapse/notifier.py,
@@ -54,6 +54,7 @@ files =
5454
synapse/storage/util,
5555
synapse/streams,
5656
synapse/types.py,
57+
synapse/util/async_helpers.py,
5758
synapse/util/caches/descriptors.py,
5859
synapse/util/caches/stream_change_cache.py,
5960
synapse/util/metrics.py,

synapse/handlers/initial_sync.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,13 @@ async def _snapshot_all_rooms(
116116
now_token = self.hs.get_event_sources().get_current_token()
117117

118118
presence_stream = self.hs.get_event_sources().sources["presence"]
119-
pagination_config = PaginationConfig(from_token=now_token)
120-
presence, _ = await presence_stream.get_pagination_rows(
121-
user, pagination_config.get_source_config("presence"), None
119+
presence, _ = await presence_stream.get_new_events(
120+
user, from_key=None, include_offline=False
122121
)
123122

124-
receipt_stream = self.hs.get_event_sources().sources["receipt"]
125-
receipt, _ = await receipt_stream.get_pagination_rows(
126-
user, pagination_config.get_source_config("receipt"), None
123+
joined_rooms = [r.room_id for r in room_list if r.membership == Membership.JOIN]
124+
receipt = await self.store.get_linearized_receipts_for_rooms(
125+
joined_rooms, to_key=int(now_token.receipt_key),
127126
)
128127

129128
tags_by_room = await self.store.get_tags_for_user(user_id)

synapse/handlers/pagination.py

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -335,20 +335,16 @@ async def get_messages(
335335
user_id = requester.user.to_string()
336336

337337
if pagin_config.from_token:
338-
room_token = pagin_config.from_token.room_key
338+
from_token = pagin_config.from_token
339339
else:
340-
pagin_config.from_token = (
341-
self.hs.get_event_sources().get_current_token_for_pagination()
342-
)
343-
room_token = pagin_config.from_token.room_key
344-
345-
room_token = RoomStreamToken.parse(room_token)
340+
from_token = self.hs.get_event_sources().get_current_token_for_pagination()
346341

347-
pagin_config.from_token = pagin_config.from_token.copy_and_replace(
348-
"room_key", str(room_token)
349-
)
342+
if pagin_config.limit is None:
343+
# This shouldn't happen as we've set a default limit before this
344+
# gets called.
345+
raise Exception("limit not set")
350346

351-
source_config = pagin_config.get_source_config("room")
347+
room_token = RoomStreamToken.parse(from_token.room_key)
352348

353349
with await self.pagination_lock.read(room_id):
354350
(
@@ -358,7 +354,7 @@ async def get_messages(
358354
room_id, user_id, allow_departed_users=True
359355
)
360356

361-
if source_config.direction == "b":
357+
if pagin_config.direction == "b":
362358
# if we're going backwards, we might need to backfill. This
363359
# requires that we have a topo token.
364360
if room_token.topological:
@@ -377,26 +373,35 @@ async def get_messages(
377373
# case "JOIN" would have been returned.
378374
assert member_event_id
379375

380-
leave_token = await self.store.get_topological_token_for_event(
376+
leave_token_str = await self.store.get_topological_token_for_event(
381377
member_event_id
382378
)
383-
if RoomStreamToken.parse(leave_token).topological < max_topo:
384-
source_config.from_key = str(leave_token)
379+
leave_token = RoomStreamToken.parse(leave_token_str)
380+
assert leave_token.topological is not None
381+
382+
if leave_token.topological < max_topo:
383+
from_token = from_token.copy_and_replace(
384+
"room_key", leave_token_str
385+
)
385386

386387
await self.hs.get_handlers().federation_handler.maybe_backfill(
387388
room_id, max_topo
388389
)
389390

391+
to_room_key = None
392+
if pagin_config.to_token:
393+
to_room_key = pagin_config.to_token.room_key
394+
390395
events, next_key = await self.store.paginate_room_events(
391396
room_id=room_id,
392-
from_key=source_config.from_key,
393-
to_key=source_config.to_key,
394-
direction=source_config.direction,
395-
limit=source_config.limit,
397+
from_key=from_token.room_key,
398+
to_key=to_room_key,
399+
direction=pagin_config.direction,
400+
limit=pagin_config.limit,
396401
event_filter=event_filter,
397402
)
398403

399-
next_token = pagin_config.from_token.copy_and_replace("room_key", next_key)
404+
next_token = from_token.copy_and_replace("room_key", next_key)
400405

401406
if events:
402407
if event_filter:
@@ -409,7 +414,7 @@ async def get_messages(
409414
if not events:
410415
return {
411416
"chunk": [],
412-
"start": pagin_config.from_token.to_string(),
417+
"start": from_token.to_string(),
413418
"end": next_token.to_string(),
414419
}
415420

@@ -438,7 +443,7 @@ async def get_messages(
438443
events, time_now, as_client_event=as_client_event
439444
)
440445
),
441-
"start": pagin_config.from_token.to_string(),
446+
"start": from_token.to_string(),
442447
"end": next_token.to_string(),
443448
}
444449

0 commit comments

Comments
 (0)