Use sorted dicts
Note that they are sorted in ascending size order, so this needs further touch-ups.
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user