Use sorted dicts
Note that they are sorted in ascending size order, so this needs further touch-ups.
1 files changed, 5 insertions, 2 deletions
diff --git a/synapse/storage/databases/state/store.py b/synapse/storage/databases/state/store.py
index 6b665cdbba..abd8404b7f 100644
--- a/synapse/storage/databases/state/store.py
+++ b/synapse/storage/databases/state/store.py
@@ -25,6 +25,7 @@ from typing import (
)
import attr
+from sortedcontainers import SortedDict
from twisted.internet import defer
@@ -143,7 +144,7 @@ class StateGroupDataStore(StateBackgroundUpdateStore, SQLBaseStore):
# Current ongoing get_state_for_groups in-flight requests
# {group ID -> {StateFilter -> ObservableDeferred}}
self._state_group_inflight_requests: Dict[
- int, Dict[StateFilter, ObservableDeferred[StateMap[str]]]
+ int, SortedDict[StateFilter, ObservableDeferred[StateMap[str]]]
] = {}
def get_max_state_group_txn(txn: Cursor) -> int:
@@ -371,7 +372,9 @@ class StateGroupDataStore(StateBackgroundUpdateStore, SQLBaseStore):
observable_deferred = ObservableDeferred(request_deferred)
# Insert the ObservableDeferred into the cache
- group_request_dict = self._state_group_inflight_requests.setdefault(group, {})
+ group_request_dict = self._state_group_inflight_requests.setdefault(
+ group, SortedDict(state_filter_rough_size_comparator)
+ )
group_request_dict[db_state_filter] = observable_deferred
return await make_deferred_yieldable(observable_deferred.observe())
|