1616import logging
1717from collections import defaultdict , namedtuple
1818from typing import (
19+ TYPE_CHECKING ,
1920 Any ,
2021 Awaitable ,
2122 Callable ,
5253from synapse .util .caches .expiringcache import ExpiringCache
5354from synapse .util .metrics import Measure , measure_func
5455
56+ if TYPE_CHECKING :
57+ from synapse .server import HomeServer
58+ from synapse .storage .databases .main import DataStore
59+
5560logger = logging .getLogger (__name__ )
5661metrics_logger = logging .getLogger ("synapse.state.metrics" )
5762
7479POWER_KEY = (EventTypes .PowerLevels , "" )
7580
7681
77- def _gen_state_id ():
82+ def _gen_state_id () -> str :
7883 global _NEXT_STATE_ID
7984 s = "X%d" % (_NEXT_STATE_ID ,)
8085 _NEXT_STATE_ID += 1
@@ -109,7 +114,7 @@ def __init__(
109114 # `state_id` is either a state_group (and so an int) or a string. This
110115 # ensures we don't accidentally persist a state_id as a stateg_group
111116 if state_group :
112- self .state_id = state_group
117+ self .state_id : Union [ str , int ] = state_group
113118 else :
114119 self .state_id = _gen_state_id ()
115120
@@ -122,7 +127,7 @@ class StateHandler:
122127 where necessary
123128 """
124129
125- def __init__ (self , hs ):
130+ def __init__ (self , hs : "HomeServer" ):
126131 self .clock = hs .get_clock ()
127132 self .store = hs .get_datastore ()
128133 self .state_store = hs .get_storage ().state
@@ -507,7 +512,7 @@ class StateResolutionHandler:
507512 be storage-independent.
508513 """
509514
510- def __init__ (self , hs ):
515+ def __init__ (self , hs : "HomeServer" ):
511516 self .clock = hs .get_clock ()
512517
513518 self .resolve_linearizer = Linearizer (name = "state_resolve_lock" )
@@ -657,13 +662,15 @@ async def resolve_events_with_store(
657662 finally :
658663 self ._record_state_res_metrics (room_id , m .get_resource_usage ())
659664
660- def _record_state_res_metrics (self , room_id : str , rusage : ContextResourceUsage ):
665+ def _record_state_res_metrics (
666+ self , room_id : str , rusage : ContextResourceUsage
667+ ) -> None :
661668 room_metrics = self ._state_res_metrics [room_id ]
662669 room_metrics .cpu_time += rusage .ru_utime + rusage .ru_stime
663670 room_metrics .db_time += rusage .db_txn_duration_sec
664671 room_metrics .db_events += rusage .evt_db_fetch_count
665672
666- def _report_metrics (self ):
673+ def _report_metrics (self ) -> None :
667674 if not self ._state_res_metrics :
668675 # no state res has happened since the last iteration: don't bother logging.
669676 return
@@ -773,16 +780,13 @@ def _make_state_cache_entry(
773780 )
774781
775782
776- @attr .s (slots = True )
783+ @attr .s (slots = True , auto_attribs = True )
777784class StateResolutionStore :
778785 """Interface that allows state resolution algorithms to access the database
779786 in well defined way.
780-
781- Args:
782- store (DataStore)
783787 """
784788
785- store = attr . ib ()
789+ store : "DataStore"
786790
787791 def get_events (
788792 self , event_ids : Iterable [str ], allow_rejected : bool = False
0 commit comments