1
0

Add more tracing to filter_events_for_client

This commit is contained in:
Eric Eastwood
2022-11-18 19:44:45 -06:00
parent e1b15f25f3
commit ede07cac66
2 changed files with 25 additions and 4 deletions

View File

@@ -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)]

View File

@@ -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]