forked from MirrorHub/synapse
Don't cache events in get_recent_events_for_room
This commit is contained in:
parent
8b0dfc9fc4
commit
d87a846ebc
1 changed files with 19 additions and 14 deletions
|
@ -36,7 +36,7 @@ what sort order was used:
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from ._base import SQLBaseStore
|
from ._base import SQLBaseStore
|
||||||
from synapse.util.caches.descriptors import cachedInlineCallbacks
|
from synapse.util.caches.descriptors import cached
|
||||||
from synapse.api.constants import EventTypes
|
from synapse.api.constants import EventTypes
|
||||||
from synapse.types import RoomStreamToken
|
from synapse.types import RoomStreamToken
|
||||||
from synapse.util.logcontext import preserve_fn
|
from synapse.util.logcontext import preserve_fn
|
||||||
|
@ -465,9 +465,25 @@ class StreamStore(SQLBaseStore):
|
||||||
|
|
||||||
defer.returnValue((events, token))
|
defer.returnValue((events, token))
|
||||||
|
|
||||||
@cachedInlineCallbacks(num_args=4)
|
@defer.inlineCallbacks
|
||||||
def get_recent_events_for_room(self, room_id, limit, end_token, from_token=None):
|
def get_recent_events_for_room(self, room_id, limit, end_token, from_token=None):
|
||||||
|
rows, token = yield self.get_recent_event_ids_for_room(
|
||||||
|
room_id, limit, end_token, from_token
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.debug("stream before")
|
||||||
|
events = yield self._get_events(
|
||||||
|
[r["event_id"] for r in rows],
|
||||||
|
get_prev_content=True
|
||||||
|
)
|
||||||
|
logger.debug("stream after")
|
||||||
|
|
||||||
|
self._set_before_and_after(events, rows)
|
||||||
|
|
||||||
|
defer.returnValue((events, token))
|
||||||
|
|
||||||
|
@cached(num_args=4)
|
||||||
|
def get_recent_event_ids_for_room(self, room_id, limit, end_token, from_token=None):
|
||||||
end_token = RoomStreamToken.parse_stream_token(end_token)
|
end_token = RoomStreamToken.parse_stream_token(end_token)
|
||||||
|
|
||||||
if from_token is None:
|
if from_token is None:
|
||||||
|
@ -517,21 +533,10 @@ class StreamStore(SQLBaseStore):
|
||||||
|
|
||||||
return rows, token
|
return rows, token
|
||||||
|
|
||||||
rows, token = yield self.runInteraction(
|
return self.runInteraction(
|
||||||
"get_recent_events_for_room", get_recent_events_for_room_txn
|
"get_recent_events_for_room", get_recent_events_for_room_txn
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.debug("stream before")
|
|
||||||
events = yield self._get_events(
|
|
||||||
[r["event_id"] for r in rows],
|
|
||||||
get_prev_content=True
|
|
||||||
)
|
|
||||||
logger.debug("stream after")
|
|
||||||
|
|
||||||
self._set_before_and_after(events, rows)
|
|
||||||
|
|
||||||
defer.returnValue((events, token))
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_room_events_max_id(self, direction='f'):
|
def get_room_events_max_id(self, direction='f'):
|
||||||
token = yield self._stream_id_gen.get_max_token()
|
token = yield self._stream_id_gen.get_max_token()
|
||||||
|
|
Loading…
Reference in a new issue