Fetch events from events_id in their own transactions

This commit is contained in:
Erik Johnston 2015-05-13 16:59:41 +01:00
parent a988361aea
commit 4071f29653
3 changed files with 168 additions and 18 deletions

View file

@ -298,6 +298,7 @@ class StreamStore(SQLBaseStore):
return self.runInteraction("paginate_room_events", f)
@defer.inlineCallbacks
def get_recent_events_for_room(self, room_id, limit, end_token,
with_feedback=False, from_token=None):
# TODO (erikj): Handle compressed feedback
@ -349,20 +350,21 @@ class StreamStore(SQLBaseStore):
else:
token = (str(end_token), str(end_token))
events = self._get_events_txn(
txn,
[r["event_id"] for r in rows],
get_prev_content=True
)
return rows, token
self._set_before_and_after(events, rows)
return events, token
return self.runInteraction(
rows, token = yield self.runInteraction(
"get_recent_events_for_room", get_recent_events_for_room_txn
)
events = yield self._get_events(
[r["event_id"] for r in rows],
get_prev_content=True
)
self._set_before_and_after(events, rows)
defer.returnValue((events, token))
@defer.inlineCallbacks
def get_room_events_max_id(self, direction='f'):
token = yield self._stream_id_gen.get_max_token(self)