Reduce auth chains fetched during v2 state res. (#6952)

The state res v2 algorithm only cares about the difference between auth
chains, so we can pass in the known common state to the `get_auth_chain`
storage function so that it can ignore those events.
This commit is contained in:
Erik Johnston 2020-02-19 15:04:47 +00:00 committed by GitHub
parent 0001e8397e
commit 2b37eabca1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 13 deletions

View file

@ -16,7 +16,7 @@
import logging
from collections import namedtuple
from typing import Dict, Iterable, List, Optional
from typing import Dict, Iterable, List, Optional, Set
from six import iteritems, itervalues
@ -662,7 +662,7 @@ class StateResolutionStore(object):
allow_rejected=allow_rejected,
)
def get_auth_chain(self, event_ids):
def get_auth_chain(self, event_ids: List[str], ignore_events: Set[str]):
"""Gets the full auth chain for a set of events (including rejected
events).
@ -674,11 +674,16 @@ class StateResolutionStore(object):
presence of rejected events
Args:
event_ids (list): The event IDs of the events to fetch the auth
chain for. Must be state events.
event_ids: The event IDs of the events to fetch the auth chain for.
Must be state events.
ignore_events: Set of events to exclude from the returned auth
chain.
Returns:
Deferred[list[str]]: List of event IDs of the auth chain.
"""
return self.store.get_auth_chain_ids(event_ids, include_given=True)
return self.store.get_auth_chain_ids(
event_ids, include_given=True, ignore_events=ignore_events,
)