Optimise _get_state_after_missing_prev_event: use /state (#12040)

If we're missing most of the events in the room state, then we may as well call the /state endpoint, instead of individually requesting each and every event.
This commit is contained in:
Richard van der Hoff 2022-04-01 12:53:42 +01:00 committed by GitHub
parent e4409301ba
commit 9b43df1f7b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 268 additions and 9 deletions

View file

@ -22,7 +22,6 @@ from typing import (
Dict,
Iterable,
List,
NoReturn,
Optional,
Set,
Tuple,
@ -1330,10 +1329,9 @@ class EventsWorkerStore(SQLBaseStore):
return results
@cached(max_entries=100000, tree=True)
async def have_seen_event(self, room_id: str, event_id: str) -> NoReturn:
# this only exists for the benefit of the @cachedList descriptor on
# _have_seen_events_dict
raise NotImplementedError()
async def have_seen_event(self, room_id: str, event_id: str) -> bool:
res = await self._have_seen_events_dict(((room_id, event_id),))
return res[(room_id, event_id)]
def _get_current_state_event_counts_txn(
self, txn: LoggingTransaction, room_id: str