diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index d627b6db13..870dbd3799 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -514,7 +514,8 @@ class RoomEventSource(object): 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.order) + # Order by the stream ordering of the events. + events.sort(key=lambda e: e.internal_metadata.stream_ordering) if limit: events[:] = events[:limit] diff --git a/synapse/storage/stream.py b/synapse/storage/stream.py index baf3715c28..d46672aa4a 100644 --- a/synapse/storage/stream.py +++ b/synapse/storage/stream.py @@ -543,20 +543,15 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore): stream = row.stream_ordering internal = event.internal_metadata + + internal.stream_ordering = stream + if topo_order: internal.before = str(RoomStreamToken(chunk, topo, stream - 1)) internal.after = str(RoomStreamToken(chunk, topo, stream)) - internal.order = ( - int(chunk) if chunk else 0, - int(topo) if topo else 0, - int(stream), - ) else: internal.before = str(RoomStreamToken(None, None, stream - 1)) internal.after = str(RoomStreamToken(None, None, stream)) - internal.order = ( - 0, 0, int(stream), - ) @defer.inlineCallbacks def get_events_around(self, room_id, event_id, before_limit, after_limit):