mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 06:53:51 +01:00
Don't cache events in get_current_state_for_key
This commit is contained in:
parent
d787e41b20
commit
8b0dfc9fc4
2 changed files with 11 additions and 9 deletions
|
@ -157,7 +157,7 @@ class EventsStore(SQLBaseStore):
|
||||||
# We purposefully do this first since if we include a `current_state`
|
# We purposefully do this first since if we include a `current_state`
|
||||||
# key, we *want* to update the `current_state_events` table
|
# key, we *want* to update the `current_state_events` table
|
||||||
if current_state:
|
if current_state:
|
||||||
txn.call_after(self.get_current_state_for_key.invalidate_all)
|
txn.call_after(self._get_current_state_for_key.invalidate_all)
|
||||||
txn.call_after(self.get_rooms_for_user.invalidate_all)
|
txn.call_after(self.get_rooms_for_user.invalidate_all)
|
||||||
txn.call_after(self.get_users_in_room.invalidate, (event.room_id,))
|
txn.call_after(self.get_users_in_room.invalidate, (event.room_id,))
|
||||||
txn.call_after(self.get_joined_hosts_for_room.invalidate, (event.room_id,))
|
txn.call_after(self.get_joined_hosts_for_room.invalidate, (event.room_id,))
|
||||||
|
@ -441,7 +441,7 @@ class EventsStore(SQLBaseStore):
|
||||||
for event, _ in state_events_and_contexts:
|
for event, _ in state_events_and_contexts:
|
||||||
if not context.rejected:
|
if not context.rejected:
|
||||||
txn.call_after(
|
txn.call_after(
|
||||||
self.get_current_state_for_key.invalidate,
|
self._get_current_state_for_key.invalidate,
|
||||||
(event.room_id, event.type, event.state_key,)
|
(event.room_id, event.type, event.state_key,)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from ._base import SQLBaseStore
|
from ._base import SQLBaseStore
|
||||||
from synapse.util.caches.descriptors import (
|
from synapse.util.caches.descriptors import cached, cachedList
|
||||||
cached, cachedInlineCallbacks, cachedList
|
|
||||||
)
|
|
||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
|
@ -155,8 +153,14 @@ class StateStore(SQLBaseStore):
|
||||||
events = yield self._get_events(event_ids, get_prev_content=False)
|
events = yield self._get_events(event_ids, get_prev_content=False)
|
||||||
defer.returnValue(events)
|
defer.returnValue(events)
|
||||||
|
|
||||||
@cachedInlineCallbacks(num_args=3)
|
@defer.inlineCallbacks
|
||||||
def get_current_state_for_key(self, room_id, event_type, state_key):
|
def get_current_state_for_key(self, room_id, event_type, state_key):
|
||||||
|
event_ids = yield self._get_current_state_for_key(room_id, event_type, state_key)
|
||||||
|
events = yield self._get_events(event_ids, get_prev_content=False)
|
||||||
|
defer.returnValue(events)
|
||||||
|
|
||||||
|
@cached(num_args=3)
|
||||||
|
def _get_current_state_for_key(self, room_id, event_type, state_key):
|
||||||
def f(txn):
|
def f(txn):
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT event_id FROM current_state_events"
|
"SELECT event_id FROM current_state_events"
|
||||||
|
@ -167,9 +171,7 @@ class StateStore(SQLBaseStore):
|
||||||
txn.execute(sql, args)
|
txn.execute(sql, args)
|
||||||
results = txn.fetchall()
|
results = txn.fetchall()
|
||||||
return [r[0] for r in results]
|
return [r[0] for r in results]
|
||||||
event_ids = yield self.runInteraction("get_current_state_for_key", f)
|
return self.runInteraction("get_current_state_for_key", f)
|
||||||
events = yield self._get_events(event_ids, get_prev_content=False)
|
|
||||||
defer.returnValue(events)
|
|
||||||
|
|
||||||
def _get_state_groups_from_groups(self, groups, types):
|
def _get_state_groups_from_groups(self, groups, types):
|
||||||
"""Returns dictionary state_group -> (dict of (type, state_key) -> event id)
|
"""Returns dictionary state_group -> (dict of (type, state_key) -> event id)
|
||||||
|
|
Loading…
Reference in a new issue