summaryrefslogtreecommitdiff
path: root/synapse/state
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2021-07-30 10:04:43 +0200
committerAndrej Shadura <andrewsh@debian.org>2021-07-30 10:04:43 +0200
commit679ff900f5e9b83af346904d7c8604cc5917608d (patch)
tree6e38ee74d09dcfb5a348090be1f0feac4fae47f9 /synapse/state
parent81e25363896b892f797b8e8ca906f2b4b49a386a (diff)
New upstream version 1.39.0
Diffstat (limited to 'synapse/state')
-rw-r--r--synapse/state/__init__.py20
-rw-r--r--synapse/state/v1.py2
-rw-r--r--synapse/state/v2.py18
3 files changed, 21 insertions, 19 deletions
diff --git a/synapse/state/__init__.py b/synapse/state/__init__.py
index a1770f62..6223daf5 100644
--- a/synapse/state/__init__.py
+++ b/synapse/state/__init__.py
@@ -309,9 +309,9 @@ class StateHandler:
if old_state:
# if we're given the state before the event, then we use that
- state_ids_before_event = {
+ state_ids_before_event: StateMap[str] = {
(s.type, s.state_key): s.event_id for s in old_state
- } # type: StateMap[str]
+ }
state_group_before_event = None
state_group_before_event_prev_group = None
deltas_to_state_group_before_event = None
@@ -513,23 +513,25 @@ class StateResolutionHandler:
self.resolve_linearizer = Linearizer(name="state_resolve_lock")
# dict of set of event_ids -> _StateCacheEntry.
- self._state_cache = ExpiringCache(
+ self._state_cache: ExpiringCache[
+ FrozenSet[int], _StateCacheEntry
+ ] = ExpiringCache(
cache_name="state_cache",
clock=self.clock,
max_len=100000,
expiry_ms=EVICTION_TIMEOUT_SECONDS * 1000,
iterable=True,
reset_expiry_on_get=True,
- ) # type: ExpiringCache[FrozenSet[int], _StateCacheEntry]
+ )
#
# stuff for tracking time spent on state-res by room
#
# tracks the amount of work done on state res per room
- self._state_res_metrics = defaultdict(
+ self._state_res_metrics: DefaultDict[str, _StateResMetrics] = defaultdict(
_StateResMetrics
- ) # type: DefaultDict[str, _StateResMetrics]
+ )
self.clock.looping_call(self._report_metrics, 120 * 1000)
@@ -700,9 +702,9 @@ class StateResolutionHandler:
items = self._state_res_metrics.items()
# log the N biggest rooms
- biggest = heapq.nlargest(
+ biggest: List[Tuple[str, _StateResMetrics]] = heapq.nlargest(
n_to_log, items, key=lambda i: extract_key(i[1])
- ) # type: List[Tuple[str, _StateResMetrics]]
+ )
metrics_logger.debug(
"%i biggest rooms for state-res by %s: %s",
len(biggest),
@@ -754,7 +756,7 @@ def _make_state_cache_entry(
# failing that, look for the closest match.
prev_group = None
- delta_ids = None # type: Optional[StateMap[str]]
+ delta_ids: Optional[StateMap[str]] = None
for old_group, old_state in state_groups_ids.items():
n_delta_ids = {k: v for k, v in new_state.items() if old_state.get(k) != v}
diff --git a/synapse/state/v1.py b/synapse/state/v1.py
index 318e9988..267193ce 100644
--- a/synapse/state/v1.py
+++ b/synapse/state/v1.py
@@ -159,7 +159,7 @@ def _seperate(
"""
state_set_iterator = iter(state_sets)
unconflicted_state = dict(next(state_set_iterator))
- conflicted_state = {} # type: MutableStateMap[Set[str]]
+ conflicted_state: MutableStateMap[Set[str]] = {}
for state_set in state_set_iterator:
for key, value in state_set.items():
diff --git a/synapse/state/v2.py b/synapse/state/v2.py
index 008644cd..e66e6571 100644
--- a/synapse/state/v2.py
+++ b/synapse/state/v2.py
@@ -276,7 +276,7 @@ async def _get_auth_chain_difference(
# event IDs if they appear in the `event_map`. This is the intersection of
# the event's auth chain with the events in the `event_map` *plus* their
# auth event IDs.
- events_to_auth_chain = {} # type: Dict[str, Set[str]]
+ events_to_auth_chain: Dict[str, Set[str]] = {}
for event in event_map.values():
chain = {event.event_id}
events_to_auth_chain[event.event_id] = chain
@@ -301,17 +301,17 @@ async def _get_auth_chain_difference(
# ((type, state_key)->event_id) mappings; and (b) we have stripped out
# unpersisted events and replaced them with the persisted events in
# their auth chain.
- state_sets_ids = [] # type: List[Set[str]]
+ state_sets_ids: List[Set[str]] = []
# For each state set, the unpersisted event IDs reachable (by their auth
# chain) from the events in that set.
- unpersisted_set_ids = [] # type: List[Set[str]]
+ unpersisted_set_ids: List[Set[str]] = []
for state_set in state_sets:
- set_ids = set() # type: Set[str]
+ set_ids: Set[str] = set()
state_sets_ids.append(set_ids)
- unpersisted_ids = set() # type: Set[str]
+ unpersisted_ids: Set[str] = set()
unpersisted_set_ids.append(unpersisted_ids)
for event_id in state_set.values():
@@ -334,7 +334,7 @@ async def _get_auth_chain_difference(
union = unpersisted_set_ids[0].union(*unpersisted_set_ids[1:])
intersection = unpersisted_set_ids[0].intersection(*unpersisted_set_ids[1:])
- difference_from_event_map = union - intersection # type: Collection[str]
+ difference_from_event_map: Collection[str] = union - intersection
else:
difference_from_event_map = ()
state_sets_ids = [set(state_set.values()) for state_set in state_sets]
@@ -458,7 +458,7 @@ async def _reverse_topological_power_sort(
The sorted list
"""
- graph = {} # type: Dict[str, Set[str]]
+ graph: Dict[str, Set[str]] = {}
for idx, event_id in enumerate(event_ids, start=1):
await _add_event_and_auth_chain_to_graph(
graph, room_id, event_id, event_map, state_res_store, auth_diff
@@ -657,7 +657,7 @@ async def _get_mainline_depth_for_event(
"""
room_id = event.room_id
- tmp_event = event # type: Optional[EventBase]
+ tmp_event: Optional[EventBase] = event
# We do an iterative search, replacing `event with the power level in its
# auth events (if any)
@@ -767,7 +767,7 @@ def lexicographical_topological_sort(
# outgoing edges, c.f.
# https://en.wikipedia.org/wiki/Topological_sorting#Kahn's_algorithm
outdegree_map = graph
- reverse_graph = {} # type: Dict[str, Set[str]]
+ reverse_graph: Dict[str, Set[str]] = {}
# Lists of nodes with zero out degree. Is actually a tuple of
# `(key(node), node)` so that sorting does the right thing