From ede07cac66c9b145b7c178d59bac050488d8da34 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Fri, 18 Nov 2022 19:44:45 -0600 Subject: [PATCH] Add more tracing to filter_events_for_client --- synapse/storage/databases/state/store.py | 8 ++++++++ synapse/visibility.py | 21 +++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/synapse/storage/databases/state/store.py b/synapse/storage/databases/state/store.py index f8cfcaca83..0145fee496 100644 --- a/synapse/storage/databases/state/store.py +++ b/synapse/storage/databases/state/store.py @@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Collection, Dict, Iterable, List, Optional, Se import attr from synapse.api.constants import EventTypes +from synapse.logging.tracing import SynapseTags, set_tag, tag_args, trace from synapse.storage._base import SQLBaseStore from synapse.storage.database import ( DatabasePool, @@ -158,6 +159,8 @@ class StateGroupDataStore(StateBackgroundUpdateStore, SQLBaseStore): ) @cancellable + @trace + @tag_args async def _get_state_groups_from_groups( self, groups: List[int], state_filter: StateFilter ) -> Dict[int, StateMap[str]]: @@ -171,6 +174,11 @@ class StateGroupDataStore(StateBackgroundUpdateStore, SQLBaseStore): Returns: Dict of state group to state map. """ + set_tag( + SynapseTags.FUNC_ARG_PREFIX + "groups.length", + str(len(groups)), + ) + results: Dict[int, StateMap[str]] = {} chunks = [groups[i : i + 100] for i in range(0, len(groups), 100)] diff --git a/synapse/visibility.py b/synapse/visibility.py index 40a9c5b53f..c92eade62b 100644 --- a/synapse/visibility.py +++ b/synapse/visibility.py @@ -23,7 +23,13 @@ from synapse.api.constants import EventTypes, HistoryVisibility, Membership from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.events.utils import prune_event -from synapse.logging.opentracing import trace +from synapse.logging.opentracing import ( + start_active_span, + SynapseTags, + set_tag, + tag_args, + trace, +) from synapse.storage.controllers import StorageControllers from synapse.storage.databases.main import DataStore from synapse.storage.state import StateFilter @@ -53,6 +59,7 @@ _HISTORY_VIS_KEY: Final[Tuple[str, str]] = (EventTypes.RoomHistoryVisibility, "" @trace +@tag_args async def filter_events_for_client( storage: StorageControllers, user_id: str, @@ -82,6 +89,11 @@ async def filter_events_for_client( Returns: The filtered events. """ + set_tag( + SynapseTags.FUNC_ARG_PREFIX + "events.length", + str(len(events)), + ) + # Filter out events that have been soft failed so that we don't relay them # to clients. events_before_filtering = events @@ -130,9 +142,10 @@ async def filter_events_for_client( sender_erased=erased_senders.get(event.sender, False), ) - # Check each event: gives an iterable of None or (a potentially modified) - # EventBase. - filtered_events = map(allowed, events) + with start_active_span("filtering events against allowed function"): + # Check each event: gives an iterable of None or (a potentially modified) + # EventBase. + filtered_events = map(allowed, events) # Turn it into a list and remove None entries before returning. return [ev for ev in filtered_events if ev]