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

Commit f1c6b76

Browse files
authored
Add logging to help debug #9424 (#10704)
1 parent 6e89536 commit f1c6b76

File tree

2 files changed

+55
-13
lines changed

2 files changed

+55
-13
lines changed

changelog.d/10704.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added opentrace logging to help debug #9424.

synapse/handlers/sync.py

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -505,10 +505,13 @@ async def _load_filtered_recents(
505505
else:
506506
limited = False
507507

508+
log_kv({"limited": limited})
509+
508510
if potential_recents:
509511
recents = sync_config.filter_collection.filter_room_timeline(
510512
potential_recents
511513
)
514+
log_kv({"recents_after_sync_filtering": len(recents)})
512515

513516
# We check if there are any state events, if there are then we pass
514517
# all current state events to the filter_events function. This is to
@@ -526,6 +529,7 @@ async def _load_filtered_recents(
526529
recents,
527530
always_include_ids=current_state_ids,
528531
)
532+
log_kv({"recents_after_visibility_filtering": len(recents)})
529533
else:
530534
recents = []
531535

@@ -566,10 +570,15 @@ async def _load_filtered_recents(
566570
events, end_key = await self.store.get_recent_events_for_room(
567571
room_id, limit=load_limit + 1, end_token=end_key
568572
)
573+
574+
log_kv({"loaded_recents": len(events)})
575+
569576
loaded_recents = sync_config.filter_collection.filter_room_timeline(
570577
events
571578
)
572579

580+
log_kv({"loaded_recents_after_sync_filtering": len(loaded_recents)})
581+
573582
# We check if there are any state events, if there are then we pass
574583
# all current state events to the filter_events function. This is to
575584
# ensure that we always include current state in the timeline
@@ -586,6 +595,9 @@ async def _load_filtered_recents(
586595
loaded_recents,
587596
always_include_ids=current_state_ids,
588597
)
598+
599+
log_kv({"loaded_recents_after_client_filtering": len(loaded_recents)})
600+
589601
loaded_recents.extend(recents)
590602
recents = loaded_recents
591603

@@ -1116,13 +1128,23 @@ async def generate_sync_result(
11161128
logger.debug("Fetching group data")
11171129
await self._generate_sync_entry_for_groups(sync_result_builder)
11181130

1131+
num_events = 0
1132+
11191133
# debug for https://github.com/matrix-org/synapse/issues/4422
11201134
for joined_room in sync_result_builder.joined:
11211135
room_id = joined_room.room_id
11221136
if room_id in newly_joined_rooms:
11231137
issue4422_logger.debug(
11241138
"Sync result for newly joined room %s: %r", room_id, joined_room
11251139
)
1140+
num_events += len(joined_room.timeline.events)
1141+
1142+
log_kv(
1143+
{
1144+
"joined_rooms_in_result": len(sync_result_builder.joined),
1145+
"events_in_result": num_events,
1146+
}
1147+
)
11261148

11271149
logger.debug("Sync response calculation complete")
11281150
return SyncResult(
@@ -1467,6 +1489,7 @@ async def _generate_sync_entry_for_rooms(
14671489
if not sync_result_builder.full_state:
14681490
if since_token and not ephemeral_by_room and not account_data_by_room:
14691491
have_changed = await self._have_rooms_changed(sync_result_builder)
1492+
log_kv({"rooms_have_changed": have_changed})
14701493
if not have_changed:
14711494
tags_by_room = await self.store.get_updated_tags(
14721495
user_id, since_token.account_data_key
@@ -1501,25 +1524,30 @@ async def _generate_sync_entry_for_rooms(
15011524

15021525
tags_by_room = await self.store.get_tags_for_user(user_id)
15031526

1527+
log_kv({"rooms_changed": len(room_changes.room_entries)})
1528+
15041529
room_entries = room_changes.room_entries
15051530
invited = room_changes.invited
15061531
knocked = room_changes.knocked
15071532
newly_joined_rooms = room_changes.newly_joined_rooms
15081533
newly_left_rooms = room_changes.newly_left_rooms
15091534

1510-
async def handle_room_entries(room_entry):
1511-
logger.debug("Generating room entry for %s", room_entry.room_id)
1512-
res = await self._generate_room_entry(
1513-
sync_result_builder,
1514-
ignored_users,
1515-
room_entry,
1516-
ephemeral=ephemeral_by_room.get(room_entry.room_id, []),
1517-
tags=tags_by_room.get(room_entry.room_id),
1518-
account_data=account_data_by_room.get(room_entry.room_id, {}),
1519-
always_include=sync_result_builder.full_state,
1520-
)
1521-
logger.debug("Generated room entry for %s", room_entry.room_id)
1522-
return res
1535+
async def handle_room_entries(room_entry: "RoomSyncResultBuilder"):
1536+
with start_active_span("generate_room_entry"):
1537+
set_tag("room_id", room_entry.room_id)
1538+
log_kv({"events": len(room_entry.events or [])})
1539+
logger.debug("Generating room entry for %s", room_entry.room_id)
1540+
res = await self._generate_room_entry(
1541+
sync_result_builder,
1542+
ignored_users,
1543+
room_entry,
1544+
ephemeral=ephemeral_by_room.get(room_entry.room_id, []),
1545+
tags=tags_by_room.get(room_entry.room_id),
1546+
account_data=account_data_by_room.get(room_entry.room_id, {}),
1547+
always_include=sync_result_builder.full_state,
1548+
)
1549+
logger.debug("Generated room entry for %s", room_entry.room_id)
1550+
return res
15231551

15241552
await concurrently_execute(handle_room_entries, room_entries, 10)
15251553

@@ -1932,6 +1960,12 @@ async def _generate_room_entry(
19321960
room_id = room_builder.room_id
19331961
since_token = room_builder.since_token
19341962
upto_token = room_builder.upto_token
1963+
log_kv(
1964+
{
1965+
"since_token": since_token,
1966+
"upto_token": upto_token,
1967+
}
1968+
)
19351969

19361970
batch = await self._load_filtered_recents(
19371971
room_id,
@@ -1941,6 +1975,13 @@ async def _generate_room_entry(
19411975
potential_recents=events,
19421976
newly_joined_room=newly_joined,
19431977
)
1978+
log_kv(
1979+
{
1980+
"batch_events": len(batch.events),
1981+
"prev_batch": batch.prev_batch,
1982+
"batch_limited": batch.limited,
1983+
}
1984+
)
19441985

19451986
# Note: `batch` can be both empty and limited here in the case where
19461987
# `_load_filtered_recents` can't find any events the user should see

0 commit comments

Comments
 (0)