forked from MirrorHub/synapse
Switch over /events to use per room caches
This commit is contained in:
parent
2d3837bec7
commit
4bf448be25
2 changed files with 22 additions and 7 deletions
|
@ -1008,15 +1008,30 @@ class RoomEventSource(object):
|
||||||
limit=limit,
|
limit=limit,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
events, end_key = yield self.store.get_room_events_stream(
|
room_events = yield self.store.get_room_changes_for_user(
|
||||||
user_id=user.to_string(),
|
user.to_string(), from_key, to_key
|
||||||
|
)
|
||||||
|
|
||||||
|
room_to_events = yield self.store.get_room_events_stream_for_rooms(
|
||||||
|
room_ids=room_ids,
|
||||||
from_key=from_key,
|
from_key=from_key,
|
||||||
to_key=to_key,
|
to_key=to_key,
|
||||||
limit=limit,
|
limit=limit or 10,
|
||||||
room_ids=room_ids,
|
|
||||||
is_guest=is_guest,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
events = list(room_events)
|
||||||
|
events.extend(e for evs, _ in room_to_events.values() for e in evs)
|
||||||
|
|
||||||
|
events.sort(key=lambda e: e.internal_metadata.after)
|
||||||
|
|
||||||
|
if limit:
|
||||||
|
events[:] = events[:limit]
|
||||||
|
|
||||||
|
if events:
|
||||||
|
end_key = events[-1].internal_metadata.after
|
||||||
|
else:
|
||||||
|
end_key = to_key
|
||||||
|
|
||||||
defer.returnValue((events, end_key))
|
defer.returnValue((events, end_key))
|
||||||
|
|
||||||
def get_current_key(self, direction='f'):
|
def get_current_key(self, direction='f'):
|
||||||
|
|
|
@ -39,7 +39,6 @@ from ._base import SQLBaseStore
|
||||||
from synapse.util.caches.descriptors import cachedInlineCallbacks
|
from synapse.util.caches.descriptors import cachedInlineCallbacks
|
||||||
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.logutils import log_function
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -288,11 +287,12 @@ class StreamStore(SQLBaseStore):
|
||||||
get_prev_content=True
|
get_prev_content=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._set_before_and_after(ret, rows, topo_order=False)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
return self.runInteraction("get_room_changes_for_user", f)
|
return self.runInteraction("get_room_changes_for_user", f)
|
||||||
|
|
||||||
@log_function
|
|
||||||
def get_room_events_stream(
|
def get_room_events_stream(
|
||||||
self,
|
self,
|
||||||
user_id,
|
user_id,
|
||||||
|
|
Loading…
Reference in a new issue